p_num = nums.length / 2 계산.p_num (최대 가져갈 수 있는 수)종류수 (모두 가져감)즉, "전체 → 고유종류세기 → 최대치 비교" 한 번에 해결!
이 문제는 "최대 종류수"만 구하면 되므로 순서/개수 무관.
HashSet(Hash Table 기반)은:
size() = 고유 종류수ArrayList + contains() 대비 100배 효율!
주요 메서드:
add(): 중복 없이 추가size(): 고유 원소 개수 반환nums = [3,1,2,3,2] (총 5마리)
p_num = 5/2 = 2
1. HashSet = {3} → {3,1} → {3,1,2} → size() = 3
2. min(3, 2) = 2
nums = [3,3,3,2,2] (총 5마리)
p_num = 2
HashSet = {3,2} → size() = 2
min(2, 2) = 2
출력: 2
import java.util.HashSet;
import java.util.Set;
class Solution {
public int solution(int[] nums) {
int p_num = nums.length / 2;
Set<Integer> species = new HashSet<>();
for (int pokemon : nums) {
species.add(pokemon);
}
return Math.min(species.size(), p_num);
}
}
포켓몬협회가 가만히있지않을것입니다