[TIL] 프로그래스 삼총사

최하온·2024년 3월 17일
0

TIL

목록 보기
48/71
post-thumbnail

🚨Issue occuring


💦What I tried


// 3명을 더했을 때 0이 되는지 확인.
// 경우의 수 더하기.
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 같이 이해하기 쉬운 변수 사용하기
  • 꽤나 시간을 투자하면 재귀함수의 로직을 대강 이해하겠으나 아직 활용에는 문제가 있음

0개의 댓글