Algorithm/프로그래머스

[프로그래머스] 포켓몬

대표대표 2024. 3. 22. 18:09

문제

입출력 예제

풀이

최대로 고를 수 있는 포켓몬의 종류의 수를 출력하면 되는 문제이다.

고를 수 있는 경우의 수는 두 가지로 나뉜다.

1. 포켓몬의 종류가 포켓몬.Size() / 2 보다 크거나 같은 경우

2. 포켓몬의 종류가 포켓몬.Size() / 2 보다 작은 경우

 

즉 전체 포켓몬의 수 / 2 가 포켓몬의 종류의 수 보다 많은 경우 포켓몬의 종류의 수를 출력하고, 그게 아닐 경우 즉 포켓몬의 종류가 전체 포켓몬의 수 / 2 보다 클 경우 포켓몬의 수 / 2 를 출력하면 된다.

 

필요한 정보는 포켓몬의 종류, 포켓몬의 수 이니 Map을 사용하여 관리한다.

코드

import java.util.HashMap;

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

        HashMap<Integer, Integer> map = new HashMap<>();

        for (int i = 0; i < nums.length; i++) {
            map.put(nums[i], map.getOrDefault(nums[i], 0) + 1);
        }

        if (map.keySet().size() >= nums.length / 2) {
            answer = nums.length / 2;
        } else {
            answer = map.keySet().size();
        }


        return answer;
    }
}