티스토리 뷰

[문제링크]

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

import java.util.HashSet;
class Solution {
    public int solution(int[] nums) {
         //겹치지 않는 최대의 경우를 생각하면 일단 겹치는 애들이 없는 경우를 만들어야 함
        HashSet<Integer> answerArr = new HashSet<Integer>();

        for (int num : nums) {
            answerArr.add(num);
        }

        int answer = 0;

        //어짜피 최고로 많은 종류가 오는 경우는 nums를 2로 나눈 만큼 오는 게 최대
        //그게 아니라면 set의 크기를 리턴하면 됨 -> 이게 겹치지 않는 최대 숫자니까
        if (answerArr.size() < nums.length / 2) {
            answer = answerArr.size();
        } else {
            answer = nums.length / 2;
        }
        return answer;
    }
}

일단 겹치지 않는 최대의 경우를 생각해야하니, hashset을 사용함.

 

최대 N/2를 선택할 수 있음. 가장 많은 종류의 수는 N/2가 됨.

 

그런데 폰켓몬의 중복이 많아서 중복된 애들을 제거하니, 그 숫자가 N/2보다 작다?

그러면 가장 많은 종류의 수는 set의 크기가 됨. 그게 제일 나올 수 있는 제일 큰 종류의 수이니까!

댓글