문제 분석
해당 문제의 경우, 서로 다른 폰켓몬의 종류가 내가 선택해야 할 폰켓몬 보다 작을 경우에는 폰켓몬의 종류를 모두 고르고 부족한 폰켓몬은 중복된 종류의 폰켓몬을 선택하고, 내가 선택해야 할 폰켓몬 보다 크거나 같은 경우 서로 다른 폰켓몬을 모두 고르면 된다.
집합에 해당 배열의 폰켓몬을 넣어줌으로써 중복을 제거했다. 중복을 제거하면 입력받은 폰켓몬의 종류를 알 수 있다.
시간복잡도의 경우 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();
}
}
'Koala - 9기 > 코딩테스트 준비 스터디' 카테고리의 다른 글
[백준/C++] 10026번 적록색약 (0) | 2023.02.12 |
---|---|
[백준/C++] 9202번 Boggle (0) | 2023.02.12 |
[BOJ/Python] 1981 배열에서 이동 (0) | 2023.02.10 |
[백준 / Python] 7117번 Sevens, twos and zeros (0) | 2023.02.07 |
[백준/python] 21608 상어초등학교 (0) | 2023.02.06 |