
โญ๏ธ ์๊ณ ๋ฆฌ์ฆ(10) : ์๋ฆฟ์ ๋ํ๊ธฐ _ Lv.1 โญ๏ธ
01. ๋ฌธ์ ์ค๋ช
๐งฉ ์์ฐ์ N์ด ์ฃผ์ด์ง๋ฉด, N์ ๊ฐ ์๋ฆฟ์์ ํฉ์ ๊ตฌํด์ returnํ๋ solution ํจ์๋ฅผ ๋ง๋ค์ด ์ฃผ์ธ์.
๐งฉ ์๋ฅผ ๋ค์ด N = 123์ด๋ฉด 1 + 2 + 3 = 6์ returnํ๋ฉด ๋๊ณ , N = 987์ด๋ฉด 9 + 8 + 7 = 24์ด๋ฏ๋ก 24๋ฅผ returnํ๋ฉด ๋ฉ๋๋ค.
๐ ์ ํ ์กฐ๊ฑด : N์ ๋ฒ์ : 100,000,000 ์ดํ์ ์์ฐ์
02. " solution.js " ๋ฌธ์ ํ์ด๋ณด๊ธฐ
๐ก ์ซ์ N์ ๋ฌธ์์ด๋ก ๋ฐ๊พธ๊ณ , ํ ๋ฌธ์์ฉ ๊ตฌ๋ถํ ๋ค์ ๊ฐ๊ฐ์ ๋ฌธ์๋ฅผ ๋ชจ๋ ๋ํด๋ณด์.
const big = [123]; const huge = [987]; function solution(n) { return (n + '').split('').reduce((acc, cur) => acc + Number(cur), 0); } ์ซ์ n + '' ๋น๋ฌธ์์ด -> ๋ฌธ์์ด n ๋ฐํ // js์์ ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ ๋, ํผ์ฐ์ฐ์ ์ค ์ด๋ ํ๋๊ฐ ๋ฌธ์์ด์ด๋ฉด ๋ค๋ฅธ ํผ์ฐ์ฐ์๋ ๋ฌธ์์ด๋ก ์ ํ์ด ๋ณํ๋์ด, ๋ฌธ์์ด์ ํฉ์น ๊ฐ์ด ๋ฐํ๋จ. // '' ๋น๋ฌธ์์ด์ ๋ฐํ๊ฐ์ ์ํฅ์ ์ฃผ์ง ์๊ณ , ๊ทธ์ ๋ค๋ฅธ ํผ์ฐ์ฐ์๋ฅผ ๋ฌธ์์ด๋ก ํ๋ณํํ๋ ์ญํ ์ ํจ. console.log(solution(big)) console.log(solution(huge))
___ ์ฐธ๊ณ ํ๊ธฐ ___
`1 String.prototype.split( ) : ๋ถํ ๊ธฐ์ค์ ๋ฐ๋ผ ๋ฌธ์์ด์ ๋ถํ ํ์ฌ ๋ฐฐ์ด๋ก ๋ฐํํฉ๋๋ค.
`2 Array.prototype.reduce( ) : ๋ฐฐ์ด์ ๊ฐ ์์์ ๋ํด ์ฃผ์ด์ง (reducer) ํจ์๋ฅผ ์คํํ๊ณ , ํ๋์ ๊ฒฐ๊ณผ๊ฐ์ ๋ฐํํฉ๋๋ค.
03. ๋ค๋ฅธ ํ์ด ์์๋ณด๊ธฐ
# 1) do ...while๋ฌธ๊ณผ Math.floor( ) ํ์ฉํ๊ธฐ
function solution(n){ let sum = 0; do { sum += n % 10; // ์ผ์ ์๋ฆฌ ์ซ์ n = Math.floor(n/10); } while(n > 0) // ( n > 0 )์ด ๊ฑฐ์ง์ธ ๊ฒฝ์ฐ๊ฐ ๋์ฌ ๋๊น์ง ๋ฐ๋ณต return sum; } console.log(solution(123)) console.log(solution(987))
___ ์ฐธ๊ณ ํ๊ธฐ ___
`1 do ... while ๋ฌธ : ํ
์คํธ ์กฐ๊ฑด์ด ๊ฑฐ์ง์ผ๋ก ํ๊ฐ๋ ๋๊น์ง ์ง์ ๋ ๊ตฌ๋ฌธ์ ์คํํ๋ ๋ฃจํ๋ฅผ ๋ง๋ญ๋๋ค.
`2 Math.floor( ) : ์ฃผ์ด์ง ์ซ์์ ๊ฐ๊ฑฐ๋ ์์ ์ ์ ์ค์์ ๊ฐ์ฅ ํฐ ์๋ฅผ ๋ฐํํฉ๋๋ค. โ ๋ด๋ฆผ
# 2) split( )๊ณผ forEach๋ฌธ ํ์ฉํ๊ธฐ
function solution(n) { let arr = n.toString().split(''); let sum = 0; arr.forEach(element => { sum += parseInt(element); // ๋ฐฐ์ด์ ๋ฌธ์ ์์๋ฅผ ์ซ์๊ฐ์ผ๋ก ๋ณํํ๊ณ ๋ํ๊ธฐ }); return sum; } console.log(solution(123)) console.log(solution(987))
___ ์ฐธ๊ณ ํ๊ธฐ ___
`1 Array.prototype.toString( ) : ์ง์ ๋ ๋ฐฐ์ด ๋ฐ ๊ทธ ์์๋ฅผ ๋ํ๋ด๋ ๋ฌธ์์ด์ ๋ฐํํฉ๋๋ค.
`2 Array.prototype.forEach( ) : ์ฃผ์ด์ง ํจ์๋ฅผ ๋ฐฐ์ด ์์ ๊ฐ๊ฐ์ ๋ํด ์คํํฉ๋๋ค.
`3 parseInt( ) : ๋ฌธ์์ด ์ธ์๋ฅผ ์ซ์๋ก ๋ณ๊ฒฝํ์ฌ ๋ฐํํฉ๋๋ค. Number( )์ ๊ฐ์ ๊ธฐ๋ฅ์ ํ๋ฉฐ,
์ฐจ์ด์ ์ ์ดํด๋ณด์๋ฉด Number( )์ ๋ฌธ์์ด์ ์ซ์๊ฐ ์๋ ๋ฌธ์๊ฐ ์์ ๊ฒฝ์ฐ ๋ฌด์กฐ๊ฑด NaN ๊ฐ์ด ์ ์ฅ๋๊ณ
parseInt( )๋ ๋ฌธ์์ด์ด ์ซ์๋ก ์์ํ๊ณ ๋ฌธ์๊ฐ ๊ปด์์ ๊ฒฝ์ฐ ๋ฌธ์ ์ ๊น์ง๋ง ์ซ์๋ก ํ๋ณํ ํ ์ ์ฅ๋๋ค๋ ๊ฒ.
# 3) split( )๊ณผ map ํ์ฉํ๊ธฐ
function solution(n){ let answer = 0; String(n).split('').map(data => answer += parseInt(data)); return answer; } console.log(solution(123)) console.log(solution(987))
___ ์ฐธ๊ณ ํ๊ธฐ ___
`1 String( ) : ์ซ์๋ฅผ ๋ฌธ์์ด๋ก ๋ณํํ์ฌ ๋ฐํํฉ๋๋ค.
`2 Array.prototype.map( ) : ๋ฐฐ์ด ๋ด์ ๋ชจ๋ ์์ ๊ฐ๊ฐ์ ๋ํด, ์ฃผ์ด์ง ํจ์๋ฅผ ํธ์ถํ ๊ฒฐ๊ณผ๋ฅผ ๋ชจ์ ์๋ก์ด ๋ฐฐ์ด์ ๋ฐํํฉ๋๋ค.
# 4) for๋ฌธ๊ณผ charAt( ) ํ์ฉํ๊ธฐ
function solution(n){ let answer = 0; n = "" + n; for(let i=0; i < n.length; i++){ answer += n.charAt(i) * 1; // ์ซ์์ ์ ๋์ฝ๋ ๊ฐ์ ์์๋ณด๋ ค๋ ์ซ์ ๊ทธ๋๋ก์ ๊ฐ. } // 1์ ์ ๋์ฝ๋ ๊ฐ = 1 , 3์ ์ ๋์ฝ๋ ๊ฐ = 3 return answer; } console.log(solution(123)) console.log(solution(987))
___ ์ฐธ๊ณ ํ๊ธฐ ___
`1 for๋ฌธ : ๊ดํธ ์์ ์์ ๋ฐ๋ณต ์คํํฉ๋๋ค.
`2 String.prototype.charAt( ) : ๋ฌธ์์ด์์ ํน์ ์ธ๋ฑ์ค์ ์์นํ๋ ์ ๋์ฝ๋ ๋จ์ผ๋ฌธ์๋ฅผ ๋ฐํํฉ๋๋ค.
# 5) ์ผํญ์ฐ์ฐ์ ํ์ฉํ๊ธฐ
function solution(n, a=0, b=0) { return String(n).length == a ? b : solution(n, a+1, b += String(n)[a] * 1 ); } // ๊ธธ์ด๊ฐ์ด 0์ด๋ฉด 0์ ๋ฐํํ๊ณ , ๊ทธ๋ ์ง ์์ผ๋ฉด ?? console.log(solution(123)) console.log(solution(987))
___ ์ฐธ๊ณ ํ๊ธฐ ___
`1 ์กฐ๊ฑด(์ผํญ) ์ฐ์ฐ์ : ์์์๋ถํฐ ์กฐ๊ฑด๋ฌธ, ๋ฌผ์ํ(?), ์กฐ๊ฑด๋ฌธ์ด ์ฐธ(truthy)์ผ ๊ฒฝ์ฐ ์คํํ ํํ์, ์ฝ๋ก (:), ์กฐ๊ฑด๋ฌธ์ด ๊ฑฐ์ง(falsy)์ผ ๊ฒฝ์ฐ ์คํํ ํํ์์ด ๋ฐฐ์น๋ฉ๋๋ค.
'Algorithm_JS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์๊ณ ๋ฆฌ์ฆ(12) : ํธ๋ํฐ ๋ฒํธ ๊ฐ๋ฆฌ๊ธฐ _ Lv.1 (2) | 2022.11.07 |
---|---|
์๊ณ ๋ฆฌ์ฆ(11) : ์ด์ํ ๋ฌธ์ ๋ง๋ค๊ธฐ _ Lv.1 (2) | 2022.11.06 |
์๊ณ ๋ฆฌ์ฆ(9) : ๋๋จธ์ง๊ฐ 1์ด ๋๋ ์ ์ฐพ๊ธฐ _ Lv.1 (4) | 2022.11.04 |
์๊ณ ๋ฆฌ์ฆ(8) : ์์ธ์์ ๊น์๋ฐฉ ์ฐพ๊ธฐ _ Lv.1 (1) | 2022.11.03 |
์๊ณ ๋ฆฌ์ฆ(7) : ๊ฐ์ด๋ฐ ๊ธ์ ๊ฐ์ ธ์ค๊ธฐ _ Lv.1 (3) | 2022.11.03 |
๋๊ธ