Development Logs/Algorithms

[JAVA] 프로그래머스 : 폰켓몬 (찾아라 프로그래밍 마에스터)

유뱅유뱅뱅 2020. 9. 4. 10:44

programmers.co.kr/learn/courses/30/lessons/1845?language=java

 

코딩테스트 연습 - 폰켓몬

당신은 폰켓몬을 잡기 위한 오랜 여행 끝에, 홍 박사님의 연구실에 도착했습니다. 홍 박사님은 당신에게 자신의 연구실에 있는 총 N 마리의 폰켓몬 중에서 N/2마리를 가져가도 좋다고 했습니다. �

programmers.co.kr

해결 방안

고를 수 있는 폰켓몬 중 종류의 최댓값을 구하는 문제이다.

따라서 HashMap에 key값을 종류, value 값을 종류의 갯수로 넣고
pick해야하는 갯수보다 map size가 크면 종류의 갯수가 더 많은 것이므로 전체 다 다른 종류를 고를 수 있게 되서 answer = pick이 된다.

pick해야하는 갯수보다 map size가 작으면 종류의 갯수가 더 작으므로 map size 만큼 종류를 고르는게 최댓값이므로 answer = map size가 된다.

코드

import java.util.*;
// 폰켓몬
class Solution {
    public int solution(int[] nums) {
        int answer = 0;
        int pick = nums.length/2;
        Map<Integer, Integer> map = new HashMap<>();
        
        for(int i=0; i<nums.length; i++){
            if(map.containsKey(nums[i])){
                map.put(nums[i], map.get(nums[i])+1);
            }
            else{
                map.put(nums[i], 1);
            }
        }
        
        if(pick <= map.size()){
            answer = pick;
        }
        else{
            answer = map.size();
        }
        
        
        return answer;
    }
}