Koala - 9기/코딩테스트 준비 스터디
[프로그래머스/java] 폰켓몬
player-geun
2023. 2. 11. 15:52
문제 분석
해당 문제의 경우, 서로 다른 폰켓몬의 종류가 내가 선택해야 할 폰켓몬 보다 작을 경우에는 폰켓몬의 종류를 모두 고르고 부족한 폰켓몬은 중복된 종류의 폰켓몬을 선택하고, 내가 선택해야 할 폰켓몬 보다 크거나 같은 경우 서로 다른 폰켓몬을 모두 고르면 된다.
집합에 해당 배열의 폰켓몬을 넣어줌으로써 중복을 제거했다. 중복을 제거하면 입력받은 폰켓몬의 종류를 알 수 있다.
시간복잡도의 경우 set에 집어넣는 O(n)이 소요되므로, nums 길이의 최대값인 10,000 들어와도 충분히 시간안에 돈다.
문제 풀이
import java.util.*;
class Solution {
static Set<Integer> set;
public int solution(int[] nums) {
int choiceNumber = nums.length / 2;
int typeNumber = countPoketmonType(nums);
if(choiceNumber > typeNumber) {
return typeNumber;
}
return choiceNumber;
}
public static int countPoketmonType(int[] nums) {
set = new HashSet<>();
for(int i = 0; i < nums.length; i++) {
set.add(nums[i]);
}
return set.size();
}
}