🔗 문제링크: 프로그래머스 - 폰켓몬
네가 가진 폰켓몬 번호가 들어 있는 배열 nums
총 개수의 절반(nums.length / 2)만큼만 데려갈 수 있을 때,
서로 다른 종류의 폰켓몬을 최대 몇 종 데려갈 수 있는지 구하는 문제
핵심은 “종류의 개수(중복 제거)”와 “뽑을 수 있는 수(절반)” 중 작은 값이 답이라는 거
Set으로 중복 제거해서 “서로 다른 종류 수”를 구해.pick = nums.length / 2.min(서로 다른 종류 수, pick).| 구분 | 내용 |
|---|---|
| 자료구조 | HashSet |
| 시간복잡도 | O(n) |
| 공간복잡도 | O(n) |
| 포인트 | 중복 제거 + 최소값 비교로 끝 |
import java.util.*;
class Solution {
public int solution(int[] nums) {
Set<Integer> kinds = new HashSet<>();
for (int n : nums) kinds.add(n);
int pick = nums.length / 2;
return Math.min(kinds.size(), pick);
}
}