function solution(number) {
let answer = 0;
for(let i = 0; i<number.length; i++){
for(let j = i+1; j<number.length; j++) {
for(let z = j+1; z<number.length; z++){
if (number[i]+number[j]+number[z] == 0){
answer++;
}
}
}
}
return answer;
}
function solution(number) {
let result = 0;
const combination = (current, start) => {
if (current.length === 3) {
result += current.reduce((acc, cur) => acc + cur, 0) === 0 ? 1 : 0;
return;
}
for (let i = start; i < number.length; i++) {
combination([...current, number[i]], i + 1);
}
}
combination([], 0);
return result;
}
내가 작성한 답은 중복 루프를 사용하기 때문에 입력 데이터가 크면 클수록 시간복잡도가 크게 증가할 수 있다.
다른 답은 재귀 함수를 이용해서 중첩 루프를 간소화하였음.
따라서, 입력 데이터가 커도 일정한 시간 복잡도를 가진다.