🚨Issue occuring
💦What I tried
function solution(number) {
let answer = 0;
for(i=0; i<number.length; i++){
for(j=i+1; j<number.length; j++){
for(k=j+1; k<number.length; k++){
if (number[i]+number[j]+number[k] === 0)
answer++
}
}
}
return answer;
}
- 주어진 배열 중 3가지를 더하였을 때 0이 되어야 함
=> 1,2,3 -> 1,2,4 -> 1,2,5 ... 의 합이 0이 되는 걸 찾아야 함.
=> 3중 for문으로 돌기
- 0인 경우 answer를 1씩 더해주기
📃 다른 사람의 풀이
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;
}
solution([-2, 3, 0, 2, -5])
- 재귀함수 사용
- 3자리일 때 더하고 0이 되면 +1 으로 카운팅
combination([-2], 1),
-> combination([-2, 3], 2)
-> combination([-2, 3, 0], 3)
-> if문 작동 -2 + 3 + 0 => false, result = 0
-> combination([-2 , 3], 2)로 돌아감
-> combination([-2 , 3, 2], 3)
...
📃What I learned new
answer
이 아니고 count
같이 이해하기 쉬운 변수 사용하기
- 꽤나 시간을 투자하면 재귀함수의 로직을 대강 이해하겠으나 아직 활용에는 문제가 있음