본문 바로가기

프로그래머스

삼총사

728x90

재귀를 할때 N을 비교해주는자리와 cnt를 비교해주는 자리가 바껴있어서 답이 안나왔다..

 

재귀를 설계할때 어떻게 해야할지 난감하다. 아직감이 안오는데, 관련자료를 찾아봐야겠다.

 

class Solution {
    static int answer = 0;
    static public void back(int sum ,int[] number, boolean visit[],int depth,int n ,int cnt)
    {
        
        
        if(cnt == 3)
        {
            
            if(sum==0)
            {
                answer++;
            }
            return;
        }
        
        if(depth ==n)
        {
            
            return;
        }
        
        visit[depth] = true;
        back(sum + number[depth],number,visit,depth+1,n,cnt+1);
        
        visit[depth] = false;
        back(sum,number,visit,depth+1,n,cnt);
        
    }
    
    public int solution(int[] number) {
        
        int sum=0;
        boolean[] visit = new boolean[number.length];
        back(sum,number,visit,0,number.length,0);
        return answer;
    }
}

 

프로그래머스 베스트코드

class Solution {
    public int solution(int[] number) {
        int answer = 0;

        for(int i=0; i<number.length-2; i++){
            for(int j=i+1; j<number.length-1; j++){
                for(int k=j+1; k<number.length; k++){
                    if(number[i]+number[j]+number[k]==0) answer++;
                }
            }
        }

        return answer;
    }
}

 

재귀를 안하고 3중포문으로 하면 결과값이 나오는구나 느꼈다.

728x90

'프로그래머스' 카테고리의 다른 글

SQL 과일로 만든 아이스크림 고르기  (0) 2023.03.29
키패드 누르기  (0) 2023.01.16
과일 장수  (0) 2023.01.15
푸드파이터대회  (0) 2023.01.14
3번 뒤집기  (0) 2023.01.12