알고리즘 & 자료구조/해시

[프로그래머스 알고리즘 고득점 Kit][해시][Java] 포켓몬

수수다 2026. 2. 17. 17:35

https://school.programmers.co.kr/learn/courses/30/lessons/1845

 

프로그래머스

SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

정답 코드

포켓몬 종류수와 내가 선택해야할 포켓몬 수를 비교해서
종류 수가 더 많다면 선택해야할 모든 포켓몬이 중복이 없고 (cnt > len/2 -> len/2만큼 뽑고도 중복없는 포켓몬이 남음)
종류 수가 더 적다면 전부 다르게 선택할 수 있음 (cnt <= len/2 -> cnt만큼 뽑고 나머지는 중복)

import java.io.*;
import java.util.*;

class Solution {
    public int solution(int[] nums) {
        int len = nums.length;
        HashSet<Integer> poketmon = new HashSet<>();
        for(int p : nums) {
            poketmon.add(p);
        }
        int cnt = poketmon.size();

        return cnt > len/2 ? len/2 : cnt;
    }
}