[프로그래머스] 폰켓몬

Wonho Kim·2026년 2월 6일

Programmers

목록 보기
6/10

폰켓몬 문제 링크

해시 맵을 사용하여 문제를 해결할 수 있다.

문제를 쭉 읽어보고 작성한 문제 풀이 흐름은 다음과 같다.

  1. 해시 맵<종류번호, 개수>로 그룹화
  2. 해시 맵의 키 세트를 가져오면, 키의 개수를 파악할 수 있음
  3. N / 2만큼 가져가기?

같은 종류 번호에 대해 해시 맵으로 저장한 다음, 해시 맵의 키만 가져와서 카운트하면 되지 않나? 라는 생각이 들었다.

근데 가져갈 수 있는 폰켓몬 수가 최대 N / 2 개이니까, 가져간 개수가 N / 2가 넘는 경우 N / 2에 맞춰주면 된다고 생각이 들었다.

import java.util.HashMap;

class Solution {
    public int solution(int[] nums) {
        int answer = 0;
        
        HashMap<Integer, Integer> hashMap = new HashMap<>();
        
        for (int num : nums) {
            hashMap.put(num, hashMap.getOrDefault(num, 0) + 1);
        }
        
        for (Integer key : hashMap.keySet()) {
            answer++;
        }
        
        if ((nums.length / 2) < answer) {
            answer = nums.length / 2;
        }
        
        return answer;
    }
}

제출하니 문제 없이 잘 통과는 했는데, 제출하고 나서 다른 사람 풀이를 보니 HashSet을 사용해서 처음부터 중복을 허용하지 않고 원소를 추가하였다.

Set을 사용하면 더욱 간단하게 해결할 수 있는데, 해시 맵을 사용해야 한다는 강박?에 괜히 사로잡혀서 푼 것 같다. 앞으로는 문제 접근을 할 때 좀 더 유연하게 생각하는 능력을 키워야 겠다...

profile
새싹 백엔드 개발자

0개의 댓글