반응형
1845번
코딩테스트 연습 - 폰켓몬 | 프로그래머스 (programmers.co.kr)
풀이
문제의 설명은 긴데 핵심은 하나입니다.
중복되지 않은 수를 구하되 (nums / 2) 이하여야 한다는 것입니다.
- 풀이1
public int solution(int[] nums) {
return Math.min(nums.length / 2, IntStream.of(nums).boxed().collect(Collectors.toSet()).size());
}
IntStream을 활용해 Set으로 만들어 중복을 제거한 후 Set의 크기를 구했습니다.
이렇게 하면 중복되지 않은 포켓몬의 수를 구할 수 있습니다.
박사님은 포켓몬을 (nums / 2) 만큼만 준다고 했으니 둘 중에 더 작은 값이 답이 되겠습니다.
✔ 테스트 케이스 처리속도: 0.80ms ~ 5.47ms
- 풀이2
public int solution2(int[] nums) {
Set<Integer> set = new HashSet<Integer>();
for (int num : nums) {
set.add(num);
}
return Math.min(nums.length / 2, set.size());
}
이건 그냥 풀이1을 stream 없이 푼 방법입니다.
✔ 테스트 케이스 처리속도: 0.05ms ~ 3.73ms
반응형
'Algorithm > Java' 카테고리의 다른 글
프로그래머스 - 모의고사 java :: 완전탐색 (0) | 2022.07.05 |
---|---|
프로그래머스 - 실패율 java :: 2019 KAKAO BLIND RECRUITMENT :: 42889 (0) | 2022.07.05 |
프로그래머스 - 약수의 개수와 덧셈 java :: 월간 코드 챌린지 시즌2 :: 77884 (0) | 2022.07.04 |
프로그래머스 - 3진법 뒤집기 java :: 월간 코드 챌린지 시즌1 :: 68935 (0) | 2022.07.04 |
프로그래머스 - 예산 java :: Summer/Winter Coding(~2018) :: 12982 (0) | 2022.07.04 |