본문 바로가기
○ 기술면접/알고리즘

해시: 폰켓몬

by ZEROMI 2023. 6. 8.
728x90

문제

N마리 폰켓몬의 종류 번호가 담긴 배열 nums가 매개변수로 주어질 때, N/2마리의 폰켓몬을 선택하는 방법 중, 가장 많은 종류의 폰켓몬을 선택하는 방법을 찾아, 그때의 폰켓몬 종류 번호의 개수를 return 하도록 solution 함수를 완성해주세요.

 

제한사항

  • nums는 폰켓몬의 종류 번호가 담긴 1차원 배열입니다.
  • nums의 길이(N)는 1 이상 10,000 이하의 자연수이며, 항상 짝수로 주어집니다.
  • 폰켓몬의 종류 번호는 1 이상 200,000 이하의 자연수로 나타냅니다.
  • 가장 많은 종류의 폰켓몬을 선택하는 방법이 여러 가지인 경우에도, 선택할 수 있는 폰켓몬 종류 개수의 최댓값 하나만 return 하면 됩니다.
import java.util.Set;
import java.util.HashSet;

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

 

노트

- 중복 제거를 위해 HashSet 사용

- Arrays 클래스를 활용해 배열을 바로 HashSet으로 변환하는게 더 좋았을 듯 함

        // 배열 -> Set
        Set<Integer> set = new HashSet<Integer>(Arrays.asList(arr));

- 지문을 집중해서 읽자...

728x90