728x90
반응형
문제 설명
정수가 담긴 리스트 num_list가 주어질 때, num_list의 원소 중 짝수와 홀수의 개수를 담은 배열을 return 하도록 solution 함수를 완성해보세요.
제한사항
- 1 ≤ num_list의 길이 ≤ 100
- 0 ≤ num_list의 원소 ≤ 1,000
입출력 예
num_list | result |
[1, 2, 3, 4, 5] | [2, 3] |
[1, 3, 5, 7] | [0, 4] |
입출력 예 #1
- [1, 2, 3, 4, 5]에는 짝수가 2, 4로 두 개, 홀수가 1, 3, 5로 세 개 있습니다.
입출력 예 #2
- [1, 3, 5, 7]에는 짝수가 없고 홀수가 네 개 있습니다.
[나의 풀이]
import java.util.stream.IntStream;
class Solution {
public int[] solution(int[] num_list) {
int count = (int)IntStream.of(num_list).filter(el->el%2 == 0).count();
return new int[] {count, num_list.length-count};
}
}
[다른 풀이]
class Solution {
public int[] solution(int[] num_list) {
int[] answer = new int[2];
for(int i = 0; i < num_list.length; i++)
answer[num_list[i]%2]++;
return answer;
}
}
answer의 길이를 2로 지정한다.
num_list의 길이만큼 반복하여 answer의 0 혹은 1 인덱스값을 증가시킨다.
0번째 인덱스에는 짝수를, 1번째 인덱스에는 홀수를 넣는다
정말 기발하구만...
import java.util.Arrays;
import java.util.stream.Collectors;
class Solution {
public int[] solution(int[] num_list) {
return Arrays.stream(num_list).boxed()
.collect(Collectors.partitioningBy(number->number%2==1 , Collectors.counting()))
.values().stream()
.toArray()
}
}
Collectors의 partitioningBy(조건, 수집할 값) 를 활용할 수도 있다.
partitioningBy()는 지정한 조건에 일치하는 그룹과 일치하지 않는 그룹 두가지로 분할한다.
지정한 조건의 boolean타입을 key로, 수집할 값을 value로 Map형태로 반환한다.
[true/false, counting]의 형태로 값을 지니고 있게 된다.
그중 values()를 활용하여 counting된 값만 가져와 배열로 변환하여 반환한 풀이법이다.
728x90
반응형
'코딩테스트 - 프로그래머스 > Lv. 0' 카테고리의 다른 글
[61] JAVA 글자 이어 붙여 문자 만들기 (0) | 2023.11.21 |
---|---|
[60] JAVA 뒤에서 5등까지 (1) | 2023.11.21 |
[58] JAVA 옷가게 할인 받기 (0) | 2023.11.21 |
[57] JAVA 배열 두 배 만들기 (1) | 2023.11.21 |
[56] JAVA 중앙 값 구하기 (1) | 2023.11.21 |