알고리즘/프로그래머스

[프로그래머스]JAVA - Level1. 폰켓몬

K.두부 2022. 9. 6. 22:09
반응형

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

 

프로그래머스

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

programmers.co.kr

풀이

홍 박사님의 총 폰켓몬의 절반을 최대한 다양한 폰켓몬으로 선택하는 문제이다.

중복없이 선택을 해야하기 때문에 바로 HashSet이 떠올랐다. HashSet을 이용하면 중복은 자동으로 제거가 되기 때문에 문제가 매우 간단해진다.

 

우선 총 폰켓몬을 전부 HashSet에 넣어서 중복을 제거한다. 이후에 HashSet의 사이즈가 총 폰켓몬의 절반을 넘으면 총 폰켓몬의 절반을 answer에 넣어주고, 총 폰켓몬의 절반보다 적으면 HashSet 사이즈를 넘겨주면 된다.

import java.util.HashSet;

class Solution {
    public int solution(int[] nums) {
        int answer = 0;
        
        HashSet<Integer> hs = new HashSet<Integer>();
        
        for (int n : nums) {
            hs.add(n);
        }
        
        if (hs.size() > nums.length/2) {
           answer = nums.length/2;
         } else {
            answer = hs.size();
        }
        
        return answer;
    }
}
반응형