재귀를 할때 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중포문으로 하면 결과값이 나오는구나 느꼈다.