문제 설명
정수가 담긴 리스트 num_list가 주어질 때, num_list의 원소 중 짝수와 홀수의 개수를 담은 배열을 return 하도록 solution 함수를 완성해보세요.
제한사항
- 1 ≤ num_list의 길이 ≤ 100
- 0 ≤ num_list의 원소 ≤ 1,000
입출력 예
입출력 설명
입출력 예 #1
- [1, 2, 3, 4, 5]에는 짝수가 2, 4로 두 개, 홀수가 1, 3, 5로 세 개 있습니다.
입출력 예 #2
- [1, 3, 5, 7]에는 짝수가 없고 홀수가 네 개 있습니다.
코드
class Solution {
public int[] solution(int[] num_list) {
int[] answer = new int[2];
for(int i=0; i<num_list.length; i++) {
if(num_list[i]%2 == 0) {
answer[0]++;
} else if(num_list[i]%2 == 1) {
answer[1]++;
}
}
return answer;
}
}
풀이
반복문을 통해 num_list 배열의 i번째의 수 % 2의 나머지가 짝수인지 홀수인지 확인 후, answer의 배열을 하나씩 증가시켜줬다.
근데 나 왜 굳이 else if를 썼지..?
다른 코드와 풀이
아래의 코드는 다른 사람들이 작성한 것들로, 내 코드와 비교, 참고하기 위해 가져왔다.
import java.util.stream.IntStream;
import java.util.Arrays;
class Solution {
public int[] solution(int[] numList) {
return IntStream.of((int) Arrays.stream(numList).filter(i -> i % 2 == 0).count(), (int) Arrays.stream(numList).filter(i -> i % 2 == 1).count()).toArray();
}
}
정수배열 numList를 Arrays.stream 메서드를 통해 스트림으로 변환한다. 그 후, filter 메서드를 통해 짝수, 홀수 골라내어 count를 통해 각각의 갯수를 계산하여 IntStream.of()를 이용해 새로운 정수 스트림으로 묶고, 이를 배열로 변환 후 반환한다.
정리
Stream
: 다양한 데이터 소스를 통일된 방법으로 다루기 위함.
- 수많은 데이터의 흐름 속에서 각각의 원하는 값을 가공하여 최종 소비자에게 제공하는 역할
- 과정으로는 Stream 생성 - 중간연산 - 최종연산 이 있음
IntStream
: 스트림 클래스 중 기본형 스트림
filter
: 스트림내 요소에 대해서 필터링하는 작업
'Coding Test' 카테고리의 다른 글
230924 자릿수 더하기 - Level 0 (0) | 2023.09.24 |
---|---|
230924 배열의 유사도 - Level 0 (0) | 2023.09.24 |
230923 배열 자르기 - Level 0 (0) | 2023.09.23 |
230923 편지 - Level 0 (0) | 2023.09.23 |
230923 배열 원소의 길이 - Level 0 (0) | 2023.09.23 |