자두의 데브로그

[자바] 프로그래머스 폰켓몬 본문

코딩테스트/Java

[자바] 프로그래머스 폰켓몬

왕자두 2024. 10. 9. 14:09

https://school.programmers.co.kr/learn/courses/30/lessons/1845

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

해시맵을 알고 있다면 쉽게 풀 수 있는 문제였다. HashMap을 통해 종류에 따른 폰켓몬의 마리 수를 세서 저장하고, iterator를 활용해서 map을 하나씩 확인하면서 answer 값을 증가시킨다. 만약 answer의 값이 N/2랑 동일해지면 break를 통해 반복문 밖으로 나가면 되고, 아니라면 map 끝까지 돌면 된다. 문제가 단순했던 이유는 nums로 입력된 폰켓몬의 종류가 최대 N개이기 때문에 최대한 많은 종류를 선택하기 위해서는 그냥 map에 저장된 값의 개수만 찾아준 뒤, 만약 N/2개 이상이면 N/2개까지만 선택 가능하도록 하면 된다.

import java.util.*;

class Solution {
    public int solution(int[] nums) {
        HashMap<Integer, Integer> map = new HashMap<>();
        for(int i : nums){
            map.put(i, map.getOrDefault(i, 0) + 1);
        }
        
        int answer = 0;
        Iterator<Map.Entry<Integer, Integer>> iter = map.entrySet().iterator();
        while(iter.hasNext()){
            Map.Entry<Integer, Integer> entry = iter.next();
            answer++;
            if(answer == nums.length/2) break;
        }
        return answer;
    }
}