https://school.programmers.co.kr/learn/courses/30/lessons/1845
해시 문제
공책에 적다가 맵을 쓰면 될꺼같다 싶어서 맵을 썼다.
import java.util.HashMap;
class Solution {
public int solution(int[] nums) {
HashMap<Integer,Integer> map = new HashMap<>();
for(int i = 0; i < nums.length; i++){
int value = (map.getOrDefault(nums[i],0)) + 1;
map.put(nums[i],value);
}
return Math.min(map.size(), (nums.length/2));
}
}
여기까지 풀고 다른 사람 풀이 보니 set을 썼었다. 근데 생각해보니 size()만 쓸꺼면 굳이 맵을 쓸 필요가 없는데 이걸 생각못했다..
import java.util.HashSet;
class Solution {
public int solution(int[] nums) {
HashSet<Integer> hs = new HashSet<>();
for(int i =0; i<nums.length;i++) {
hs.add(nums[i]);
}
if(hs.size()>nums.length/2)
return nums.length/2;
return hs.size();
}
}
테스트 결과보면 어떤건 내 코드가 빠르고 어떤건 이게 빠르다.