본문 바로가기

Development/CodingTest

[Hash] 프로그래머스 level 1 폰켓몬 Java 풀이

Hash란?

Hash는 임의 크기의 데이터를 고정 크기의 값으로 변환하는 함수 또는 알고리즘을 의미

 

HashSet?

HashSet은 중복되지 않는 고유한 값을 저장하기 위한 자료 구조

 

해결 흐름

1. int[] nums의 중복 요소를 제거하고 그 길이를 리턴 -> HashSet 사용

2. nums/2 개 만큼 폰켓몬을 데려갈 수 있는데 nums/2 크기가 HashSet의 크기보다 작다면 최대 종류 별로 nums/2 까지 밖에 못 데려감 -> nums/2 리턴, HashSet 크기가 nums/2 보다 작다면 HashSet 크기 리턴

 

입출력 예

nums, result

[3,1,2,3] 2
[3,3,3,2,2,4] 3
[3,3,3,2,2,2] 2

 

코드

import java.util.*;

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