
for문 버전
class Solution {
public int solution(int[] number) {
int count = 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)
count++;
}
}
}
return count;
}
}
재귀 함수 버전
import java.util.ArrayList;
import java.util.List;
public class Solution {
public int solution(int[] number) {
int count = 0;
List<List<Integer>> three = Combi1(number);
// 결과 출력
for(List<Integer> line : three) {
if(line.get(0) + line.get(1) + line.get(2) == 0)
count++;
}
return count;
}
private static List<List<Integer>> Combi1(int[] number) {
List<List<Integer>> result = new ArrayList<>();
Combi2(number, 0, new ArrayList<>(), result);
return result;
}
private static void Combi2(int[] number, int index, List<Integer> current, List<List<Integer>> result) {
if(current.size() == 3) {
result.add(new ArrayList<>(current)); // 3개가 되면 결과에 추가
return;
}
for(int i = index; i < number.length; i++) {
current.add(number[i]);
Combi2(number, i + 1, current, result); // 다음 원소로 재귀 호출
current.remove(current.size() - 1); // 백트래킹?
}
}
}
https://school.programmers.co.kr/learn/courses/30/lessons/131705