코딩테스트 공부

해시-폰켓몬

구 승 2024. 8. 22. 18:49

간단하게 중복이 아닌 방법중에서 최대한 여러개를 선택해야됨(대신 전체의 절반)

전체를 중복없이 선택한 값과 전체/2 중에 값이 작은걸 선택하면된다.

 

HashSet을 쓴 방법

import java.util.*;

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

HashMap을 쓴 방법

import java.util.HashMap;

class Solution {
    public int solution(int[] nums) {
        HashMap<Integer, Integer> map = new HashMap<Integer,Integer>();

        for (int i = 0; i < nums.length; i++)
            map.put(nums[i], 1);

        return Math.min(map.size(), nums.length / 2); 
    }
}

주로 키(key):값(value)를 통해 답을 알아내는 방식인 해시기 때문에 HashMap을 써야되나 했지만

HashSet이 자동으로 중복을 생략해주기 때문에 좀 더 편리한 방법이다.