본문 바로가기
정리/알고리즘

프로그래머스 - 폰켓몬

by Hudini30 2022. 4. 5.

해당 문제는 입력받은 포켓몬 종류를 해시맵에 종류를 키로 값은 카운트 값을 가지게 해서 넣고, 문제가 원하는 결과는 최대 다양하게 포켓몬 종류를 가지는 경우로 해시맵의 사이즈와 같다는 것을 알 수 있습니다. 제한조건으로 고를 수 있는 포켓몬 수는 입력받은 nums.length 의 반 이므로 Math.min으로 해시맵의 사이즈와 nums의 사이즈 중 작은값을 리턴하도록 구현했습니다.
단순하게 다 넣고 해시맵의 크기와 최대 고를수 있는 갯수중 작은 값을 리턴하는 방식과, 해시맵에 넣는 중 그 답변 크기가 maxChoice 크기보다 커질 경우 바로 종료 하는 방식도 있을듯합니다.

    public int solution(int[] nums) {
        int answer = 0;
        Map<Integer, Integer> ketmonMap = new HashMap<>();
        for (int num : nums) {
            ketmonMap.put(num, ketmonMap.getOrDefault(num, 0) + 1);
        }


        return Math.min(nums.length / 2, ketmonMap.size());
    }

    public int solution2(int[] nums) {
        int answer = 0;
        int maxChoiceCount = nums.length / 2;
        Map<Integer, Integer> ketmonMap = new HashMap<>();
        for (int num : nums) {
            int count = ketmonMap.getOrDefault(num, 0);
            if (count == 0) {
                answer++;
                if(answer > maxChoiceCount) {
                    return maxChoiceCount;
                }
            }
            ketmonMap.put(num,  count + 1);
        }


        return answer;
    }

댓글