본문 바로가기
Java/공부

[JAVA] 예제로 Hash map 공부하기

by notcherry 2023. 7. 25.

[문제] 해시 포켓몬 문제

 

문제 설명

 

홍 박사님은 당신에게 자신의 연구실에 있는 총 N마리 포켓몬 중에서 N/2마리를 가져가도 좋다고 했다. 홍박사님은 연구실의 포켓몬 종류에 따라 번호를 붙였다. 같은 종류의 포켓몬은 같은 번호를 가지고 있다. 

 

당신은 최대한 다양한 종류의 포켓몬을 가지길 원하기 때문에 최대한 많은 포켓몬을 포함해서 N/2마리를 선택하려고 한다. N마리 포켓몬의 종류 번호가 담긴 배열 nums가 매개변수로 주어질 때, N/2마리의  포켓몬을 선택하는 방법 중 가장 많은 종류의 포켓몬을 선택하는 방법을 찾아 종류 번호의 개수를 return하도록 solution 함수를 완성하라.

 

 

코드

 

import java.util.*;

class Solution {
    public int solution(int[] nums) {
        int answer = 0;

        HashMap<Integer, Integer> n = new HashMap<>();
        for(Integer num : nums ){
            n.put(num, n.getOrDefault(num,0)+1);
        }
        answer = Math.min(n.size(), nums.length / 2);
        return answer;
    }
}

 

 

hashmap을 이용하여 nums 배열을 순회하며 포켓몬의 종류 번호별 개수를 센다. 만약 포켓몬 종류 번호의 개수가 가져갈 수 있는 포켓몬 종류의 최대 개수보다 크다면, 최대개수를 반환한다.