728x90

배열이 주어질 때 세 원소의 합이 0이 되는 경우의 수 반환

public int solution(int[] number) {

int answer=0;

int sum = 0;

Stack<Integer> stack = new Stack<>();

int fi = 0;

int si = 1;

int li = 2;

while(fi<=number.length-3) {

sum+=stack.push(number[fi]);

while(si<=number.length-2) {

sum+=stack.push(number[si]);

while(li<=number.length-1) {

sum+=stack.push(number[li]);

if(sum==0)answer++;

sum-=stack.pop();

li++;

}

if(li==number.length) {

sum-=stack.pop();

si++;

li=si+1;

}

}

if(si==number.length-1) {

sum-=stack.pop();

fi++;

si=fi+1;

li=si+1;

}

}

return answer;

}

괜히 어렵게 생각해서 stack으로 123 124 125 134 135 ... 계산했다.... 

정답률 높은 문제였는데 알고보니까 그냥 배열 그대로 두고 삼중for문으로 풀 수 있었다.

사실 내가 푼것도 3중 반복문이라 .........................................................

public int solution2(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;

}

+ Recent posts