폰켓몬

이은미·2025년 10월 5일
0

폰켓몬

🔗 문제링크: 프로그래머스 - 폰켓몬


🧠 문제파악

네가 가진 폰켓몬 번호가 들어 있는 배열 nums
총 개수의 절반(nums.length / 2)만큼만 데려갈 수 있을 때,
서로 다른 종류의 폰켓몬을 최대 몇 종 데려갈 수 있는지 구하는 문제

핵심은 “종류의 개수(중복 제거)”와 “뽑을 수 있는 수(절반)” 중 작은 값이 답이라는 거


💡 접근방법

  1. Set으로 중복 제거해서 “서로 다른 종류 수”를 구해.
  2. 뽑을 수 있는 최대 수는 pick = nums.length / 2.
  3. 정답은 min(서로 다른 종류 수, pick).
구분내용
자료구조HashSet
시간복잡도O(n)
공간복잡도O(n)
포인트중복 제거 + 최소값 비교로 끝

🧩 문제풀이 (Java)

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);
    }
}
profile
파이팅 해야지

0개의 댓글