o 요구사항
매개변수 : N마리 폰켓몬의 종류 번호가 담긴 배열 nums
return : N/2마리의 폰켓몬을 선택하는 경우의 수 중 가장 큰 값(단, 폰켓몬 종류를 다르게 선택할 때)
경우의 수 나누기
폰켓몬을 선택하는 경우는 폰켓몬의 종류가 모두 다를때에도 최대값이 N/2의 경우를 넘을 수 없다
예를 들어 폰켓몬이 10마리 그리고 종류가 모두 달라 10종류일 때도 10/2, 즉 5마리 밖에 선택할 수 없다.
때문에 폰켓몬 종류가 N/2 보다 적은 경우와 이 보다 많은 경우를 나누어 생각한다
o 코드진행
Java Set 컬렉션의 경우 순서에 상관없이 중복을 허용하지 않는다. 이를 이용해 폰켓몬 종류개수를 구한뒤
선택할 수 있는 폰켓몬을 개수를 반환하는 코드를 작성한다
o 완성코드
import java.util.HashSet;
import java.util.Set;
class Solution {
public int solution(int[] nums) {
if(getSizeOfSet(nums) < nums.length/2) {
return getSizeOfSet(nums);
}
return nums.length/2;
}
Integer getSizeOfSet(int[] nums){
Set<Integer> set = new HashSet<>();
for(int i: nums) {
set.add(i);
}
return set.size();
}
}
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
[Java][프로그래머스-코딩테스트 level2] 피보나치 수 (0) | 2021.06.12 |
---|---|
[Java][프로그래머스-코딩테스트 level1] 3진법 뒤집기 (0) | 2021.06.11 |
[Java][프로그래머스-코딩테스트 level1] 약수의 개수와 덧셈 (0) | 2021.06.10 |
[Java][프로그래머스-코딩테스트 level1] 로또의 최고 순위와 최저 순위 (0) | 2021.06.10 |
[Java][프로그래머스-코딩테스트 level1] 2016년 (0) | 2021.06.09 |