어제의 나보다 성장한 오늘의 나

[프로그래머스][Level2][Java] 폰켓몬 본문

알고리즘/프로그래머스(Programmers)

[프로그래머스][Level2][Java] 폰켓몬

NineOne 2020. 12. 28. 21:28

programmers.co.kr/learn/courses/30/lessons/1845

 

코딩테스트 연습 - 폰켓몬

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

programmers.co.kr

문제풀이

막상 문제가 길어서 어렵게 느껴졌는데 N/2마리를 뽑는 것 중에서 가장 많은 종류의 포켓몬을 선택하는 방법이 핵심이다. HashSet으로 포켓몬 종류를 구해서 N/2마리보다 포켓몬 종류가 많다면 최대로 많이 뽑을 수 있는 종류는 N/2 개수 밖에 안된다. 만약 반대로 N/2마리보다 종류가 적다면 최대로 뽑을 수 있는 폰켓몬 수가 정해져 있기 때문에 종류 개수 그래로 return 하면 된다. 

코드

import java.util.*;

class Solution {
    public int solution(int[] nums) {
        HashSet<Integer> hs = new HashSet<Integer>();
        
        for(int i=0; i<nums.length; i++){
            hs.add(nums[i]);
        }
        
        int answer = hs.size();
        if(nums.length/2 < answer) answer = nums.length/2;
        return answer;
    }
}
Comments