반응형
문제출처
https://programmers.co.kr/learn/courses/30/lessons/1845
문제풀이
단순하게 구현을 할 수도 있지만 Set자료구조를 사용하면 더 빠르고 쉽게 풀수 있는 문제다. nums배열의 크기가 n인경우 선택할 수 있는 폰켓몬의 수는 n/2마리인데 n/2마리를 선택할 때 폰켓몬의 종류를 출력하는 문제다.
폰켓몬의 종류의 수만 알면 되기 때문에 몇번째 폰켓몬이 선택되었는지는 중요하지 않다. 즉 중복되지 않은 자료만 유효하다. 그래서 Set자료구조를 생각하게 되었다.
선택한 폰켓몬의 최대값은 n/2이고 최소값은 1이다. 즉, Set에 모든 폰켓몬의 자료를 넣어 중복을 없앤뒤 Set의 크기가 n/2보다 크면 n/2를 아니면 Set의 크기를 반환해주면 된다.
소스코드
import java.util.*;
class Solution {
public int solution(int[] nums) {
Set<Integer> phoneketmonSet = new HashSet<>();
int pickSize = nums.length / 2;
for (int num : nums) {
phoneketmonSet.add(num);
}
return pickSize > phoneketmonSet.size()
? phoneketmonSet.size() : pickSize;
}
}
반응형
'Algorithm' 카테고리의 다른 글
[프로그래머스 12981] - 영어 끝말잇기 (0) | 2020.05.28 |
---|---|
[프로그래머스 12980] - 점프와 순간이동 (0) | 2020.05.28 |
[프로그래머스 17686] - 카카오 파일명 정렬 (0) | 2020.05.28 |
[프로그래머스 17683] - 카카오 방금그곡 (0) | 2020.05.27 |
[프로그래머스 12977] - 소수 만들기 (0) | 2020.05.26 |