본문 바로가기
코딩테스트/프로그래머스 1단계

프로그래머스 1단계 - 폰켓몬

by SICDev 2021. 4. 26.
반응형

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

 

코딩테스트 연습 - 폰켓몬

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

programmers.co.kr

 

 

import java.util.*;

//nums의 갯수의 절반 만큼 포켓몬을 가지고갈수 있다..
//포켓몬은 중복으로 가져갈수 없음..
//{1,2,3,4,5,6} 이라면 최대 3개의 포켓몬을 가지고갈수 있고, 총 다른 종류의 포켓몬 3개를 가지고갈수 잇다
//{1,1,1,2,2,2} 라면 최대 3개의 포켓몬을 가지고 갈 수 있지만, 다른 종류의 포켓몬을 가져가야하기에 2개밖에 못가져간다.
//중복 제거를 하는게 제일 좋지 않을까..? HashSet은 중복을 허용하지 않기때문에..HashSet에 넣는게 좋아보인다..?
class Solution {
    public int solution(int[] nums) {
        int answer = 0;
        int getPoketmonMax = (nums.length)/2;
        HashSet<Integer> PokectMon = new HashSet<>();
        for(int i=0; i<nums.length; i++){
            PokectMon.add(nums[i]);
        }
        //중복을 제거한 총 포켓몬의 수 
        int PoketMonKind = PokectMon.size();
        //총 포켓몬의 수가 가지고갈수 있는 수 보다 작으면 총 포켓몬 수만큼밖에 못가져감... 
        if(PoketMonKind <= getPoketmonMax){
            answer = PoketMonKind;
        }
        //총 포켓몬의 수가 가지고갈수 있는 수 보다 크면 가지고갈수 있는 만큼 다 가져가면 됨 
        else{
            answer = getPoketmonMax;
        }
        return answer;
    }
}
반응형