코딩테스트/Java

[JAVA] 프로그래머스 폰켓몬

SK_MOUSE 2021. 11. 5. 21:27
반응형

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