코딩테스트 공부
해시-폰켓몬
구 승
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이 자동으로 중복을 생략해주기 때문에 좀 더 편리한 방법이다.