[프로그래머스] 폰켓몬

urzi·2022년 3월 21일
0

PS

목록 보기
1/36

문제

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

풀이

너무 어렵게 생각해서 어렵게 풀려고 했는데 알고보니 굉장히 쉬웠다.

  1. 주어진 배열 nums의 중복을 HashSet을 이용하여 제거해준다.
  2. HashSet의 크기와 총 배열의 크기 N의 N/2를 비교한다.
  3. HashSet의 크기가 크다면, 애초에 가질 수 있는 폰켓몬은 전체 N마리의 폰켓몬 중 N/2이기 때문에 정답은 N/2가 된다.
  4. 만약 HashSet의 크기가 총 배열의 크기보다 작다면 HashSet의 크기가 정답이 된다.

코드

public int solution(int[] nums) {

        // 주어진 nums를 HashSet에 담아준다.(자동적으로 중복 제거)
        HashSet<Integer> set = new HashSet<>();
        for (int x : nums) {
            set.add(x);
        }

        // HashSet이 N/2보다 크다면 최대값은 N/2가 된다.
        if (set.size() > nums.length / 2) {
            answer = nums.length / 2;
        } else {
            // 그게 아니라면 폰켓몬의 종류는 N/2보다 작다는 얘기이므로 HashSet가 정답이 된다.
            answer = set.size();
        }

        return answer;
    }
profile
Back-end Developer

0개의 댓글