삼총사

Seongjin Jo·2023년 2월 14일
0

프로그래머스 LV1

목록 보기
15/31

문제

그냥 경우의 수 구하는 문제.

풀이

class Solution {
    static int[] ch;
    static int answer=0;
    
    public int solution(int[] number) {
        ch = new int[number.length+1];
        DFS(0,0,number,0);
        return answer;
    }
    
    public static void DFS(int L,int sum,int[] number,int s){
        if(L==3 && sum==0) answer++;
        if(L==3) return;
        else{
            for(int i=s; i<number.length; i++){      
                if(ch[i]==0){
                    ch[i]=1;  
                    DFS(L+1,sum+number[i],number,i+1);  
                    ch[i]=0;
                }                
            }      
        }
    }
    
}

그냥 경우의 수 구하는 간단한 문제인데, 일반적인 for문을 이용해서 비교해가면서 구하기는 시간복잡도도 그닥이고 흔한 방식같아서 DFS로 구현해봤다.

0개의 댓글