비전공자가 IT개발자로, 커리어전환기4
부제 : 잘 풀리지 않는 자바스크립트알고리즘 sumDigits 디버깅을 통한 문제해결하기. 아니 알고리즘문제…왜이렇게 안 풀리는거야? 한 문제가지고 몇시간동안 씨름하고있다.
TIL : a005_sumDigits문제 숫자가 주어졌을때, “sumDigits” 함수는 숫자의 각 자리수를 모두 더한 값을 반환합니다.
1 2 3 4 5 function sumDigits (num ) { } let output = sumDigits(-316 );console .log(output);
아하 반복문으로 돌리면서 조건문을 써야하는 문제구나!
일반 접근 1 2 3 4 5 6 7 8 9 10 11 12 13 14 function sumDigits (num ) { let sum = 0 ; let stringNumArr = num.toString().split('' ); for (let i = 0 ; i < stringNumArr.length; i++) { if (stringNumArr[0 ] === '-' && i === 1 ) { sum = sum - Number (stringNumArr[1 ]); } else if (stringNumArr[i] !== '-' ) { sum = sum + Number (stringNumArr[i]); } } return sum; }
1 2 let output = sumDigits(-316 );console .log(output);
디버깅을 통한 문제해결 예시대로 디버깅해서 풀어 써보자.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 function sumDigits (num ) { let sum = 0 ; let stringNumArr = num.toString().split('' ); for (let i = 0 ; i < 4 ; i++) { if (stringNumArr[0 ] === '-' && 0 === 1 ) { sum = 0 - Number (stringNumArr[1 ]); } else if (stringNumArr[0 ] !== '-' ) { sum = 0 + Number (stringNumArr[0 ]); } if (stringNumArr[0 ] === '-' && 1 === 1 ) { sum = 0 - Number (stringNumArr[1 ]); } else if (stringNumArr[0 ] !== '-' ) { sum = 0 + Number (stringNumArr[1 ]); } if (stringNumArr[0 ] === '-' && 2 === 1 ) { sum = -3 - Number (stringNumArr[1 ]); } else if (stringNumArr[0 ] !== '-' ) { sum = -3 + Number (stringNumArr[2 ]); } if (stringNumArr[0 ] === '-' && 3 === 1 ) { sum = -2 - Number (stringNumArr[1 ]); } else if (stringNumArr[0 ] !== '-' ) { sum = -2 + Number (stringNumArr[3 ]); } } return sum; }