반응형
HashSet을 이용해 중복제거하는 문제이다.
처음 문제를 봤을때 dfs combination 문제인줄 알고 dfs로 모두 구했더니 시간초과가 발생했다.
다시 생각해보니 nums.length/2 미만인경우 아니라면 최대한 많이뽑아도 nums.length/2개이니 해당 값을 return해주면 되는 간단한 문제였다.
if문을 할때 종이로 쓰는 습관을 들여야겠다.
import java.util.HashSet;
import java.util.Set;
class Solution {
static int[] result;
static int max=0;
public int solution(int[] nums) {
int answer = 0;
result = new int[nums.length/2];
Set<Integer> s = new HashSet<>();
for(int n : nums) s.add(n);
//Integer[] newArr = s.toArray(new Integer[0]);
//System.out.println(Arrays.toString(newArr));
if(s.size()<nums.length/2) return s.size();
else return nums.length/2;
//comb(nums, nums.length, nums.length/2);
//return max;
}
/* public static void comb(int[] newArr, int n, int r){
if(r==0){
Set<Integer> set = new HashSet<>();
for(int rst : result) set.add(rst);
max = Math.max(max,set.size());
}else if(n<r){
return;
}else{
result[r-1] = newArr[n-1];
comb(newArr, n-1, r-1);
comb(newArr, n-1, r);
}
}*/
}
반응형
'코딩테스트 > Java' 카테고리의 다른 글
[JAVA] 백준 양 (0) | 2021.12.14 |
---|---|
[JAVA] 백준 동전1 (0) | 2021.11.18 |
[JAVA] 프로그래머스 소수 만들기 (0) | 2021.11.05 |
[JAVA] 프로그래머스 음양 더하기 (0) | 2021.10.27 |
[JAVA] 프로그래머스 약수의 개수와 덧셈 (0) | 2021.10.27 |