배열이 주어질 때 세 원소의 합이 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;
}
'Java > Coding Test' 카테고리의 다른 글
가장 가까운 같은 글자 문제풀이 (0) | 2023.09.26 |
---|---|
시저 암호 문제풀이 (0) | 2023.09.25 |
문자열 내 마음대로 정렬하기 문제풀이 (0) | 2023.09.25 |
성격 유형 검사하기 문제풀이 (0) | 2023.09.25 |
약수의 개수와 덧셈 문제풀이 (0) | 2023.09.24 |