본문 바로가기
Language/알고리즘 문제풀이

프로그래머스 폰켓몬(Java)

by wakestand 2019. 9. 29.
반응형

사이트명 : 프로그래머스(Programmers)

문제명 : 폰켓몬

언어 : 자바(Java)

 

int nums 배열을 받는데

여기서 다른 값을 최대 몇 종류까지 가져올 수 있냐는 얘기다

종류의 한계는 nums.length / 2를 해주면 간단히 가져올 수 있다

내 풀이방법은 아래와 같은데

 

먼저 set에 nums 배열을 다 담아주는데

set은 중복을 허용하지 않기 때문에 동일한 값을 넣을 경우 하나만 들어간다

 

즉 최대 종류를 파악하는 문제기 때문에 중복 값은 필요가 없다는 얘기다

 

이후 set.size가 nums.length를 절반으로 나눈 값보다 크다면

절반만 반환할 수 있으므로 nums.length / 2를 반환하고

 

그렇지 않을 경우 모두 반환이 가능하므로 answer를 set.size로 한 뒤 반환하면 된다

 

마지막으로 프로그래머스에 바로 적용 가능한 코드는 아래와 같다

 

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

}
반응형

댓글