
간단하게 중복이 아닌 방법중에서 최대한 여러개를 선택해야됨(대신 전체의 절반)
전체를 중복없이 선택한 값과 전체/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이 자동으로 중복을 생략해주기 때문에 좀 더 편리한 방법이다.
'코딩테스트 공부' 카테고리의 다른 글
해시-전화번호 목록 (0) | 2024.08.27 |
---|---|
해시-완주하지 못한 선수 (0) | 2024.08.25 |
평균 구하기-level1 (0) | 2024.04.23 |
약수의 합-level1 (0) | 2024.04.23 |
나머지가 1이 되는 수 찾기 -level1 (0) | 2024.04.23 |

간단하게 중복이 아닌 방법중에서 최대한 여러개를 선택해야됨(대신 전체의 절반)
전체를 중복없이 선택한 값과 전체/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이 자동으로 중복을 생략해주기 때문에 좀 더 편리한 방법이다.
'코딩테스트 공부' 카테고리의 다른 글
해시-전화번호 목록 (0) | 2024.08.27 |
---|---|
해시-완주하지 못한 선수 (0) | 2024.08.25 |
평균 구하기-level1 (0) | 2024.04.23 |
약수의 합-level1 (0) | 2024.04.23 |
나머지가 1이 되는 수 찾기 -level1 (0) | 2024.04.23 |