https://programmers.co.kr/learn/courses/30/lessons/1845
폰켄몬의 종류가 담긴 배열 nums가 있고, 여기서 가져갈 수 있는 폰켓몬의 최대값은 nums/2이다.
가져갈 수 있는 최대 폰켄몬 종류 갯수를 구해야한다 (중복으로 가져가면 해당 폰켄몬의 갯수는 무조건 1이다)
입력 : nums
[3,1,2,3]
최대로 가져갈 수 있는 폰켄몬 갯수는 2개이다. (최대 2개)
입력 : nums
[3,3,3,2,2,2]
최대로 가져갈 수 있는 폰켄몬 갯수는 2개이다. (최대 3개까지 가져갈 수 있지만, 모두 중복이기 때문에)
public class Solution {
public int solution(int[] nums) {
int max = nums.length / 2;
// 중복제거하기
HashSet<Integer> numsSet = new HashSet<>();
for (int num : nums) {
numsSet.add(num);
}
// 중복을 제거한 셋의 크기가 max보다 크면 max를, 작으면 numsSet의 size를 리턴
if (numsSet.size() > max) {
return max;
} else {
return numsSet.size();
}
}
@Test
public void 정답() {
Assert.assertEquals(2, solution(new int[]{3, 1, 2, 3}));
}
}