D+32
- ์๋ก ์ํฌ 2์ผ ์ฐจ -
( ํ๋ฆฐ ๋ฌธ์ ํ๊ธฐ & ๋ณต์ต )
์ค๋์ ์ ๋ ์ ๋ฏธ์ณ ํ์ง ๋ชปํ ๋ฌธ์ ๋ฅผ ํธ๋ ์๊ฐ์ ๊ฐ์ก๋ค.
์ด 7๋ฌธ์ ์ค์์ 3๋ฌธ์ ์ ๋๋ ํ๋ฃป๋ฐค ์๊ณ ์ผ์ด๋์ ํ์๋๋
์ด์ ๋ ์๋ฌด๋ฆฌ ๋จธ๋ฆฌ๋ฅผ ๊ตด๋ ค๋ ํ๋ฆฌ์ง ์๋ ๋ฌธ์ ๊ฐ
์์ธ๋ก ๊ทธ๋ญ์ ๋ญ ํ๋ ค์ ํด์์ ์ค์์ฑ(?)์ ๋๊ผ๋ค.
๋๋จธ์ง 4๋ฌธ์ ๋ ์๋ฌด๋ฆฌ ํ์ด๋ ์ ํ๋ฆฌ์ง ์์๊ธฐ์
๋ฌธ์ ๋น 40๋ถ์ ๋ ํธ๋ ์๊ฐ์ ๊ฐ์ง๊ณ
๊ทธ๋๋ ํ๋ฆฌ์ง ์์ผ๋ฉด ๋ํผ๋ฐ์ค๋ฅผ ๋ณด๊ฑฐ๋ ๊ธฐ์กด์ ํ์ด ๋ถ๊ณผ ํ์๋ ์ฝ๋๋ฅผ ๋ณด๋ฉด์
์ดํดํ๋ ค ๋ ธ๋ ฅํ๋ค.
๊ทธ๋ ๊ฒ ํ๋ฒ๋ฌธ์ ๋ฅผ ๋๋ฆฌ๊ณ ๋์ ๋ด๊ฐ ์ ๋๋ก ๋ฌธ์ ๋ฅผ ์ดํดํ๋์ง ํ์ธํ๊ธฐ ์ํด
ํ์๋ ๋ฌธ์ ๋ฅผ ๋ ๋ค์ ํ๋ฒ ํธ๋ ์๊ฐ์ ๊ฐ์ก๋ค.
๊ทธ๋ ๊ฒ ๊ณ์ ๋ฌธ์ ๋ฅผ ๋ฐ๋ณต์ ์ผ๋ก ํ๊ณ ๋๋
์๋ก ์ํฌ ์ฒซ๋ ์ ํ์๋ ๊ฒ๋ณด๋จ ํจ์ฌ ์์ํ๊ฒ ํ๋ฆฌ๋ ๊ฒ ๊ฐ์
์ฝ๊ฐ์ ์์ ๊ฐ์ด ์๊ฒผ๋ค.
๋ฌธ์ ๋ค์ ๋ค ํ์์ผ๋
๋ด์ผ์ ์ด์ ๋ฌธ์ ๊ฐ ์๋ ๊ณผ์ ๋ค์ ํ ๋ฒ์ฉ ๋ณต์ตํ ์์ ์ด๋ค.
๋๋ ํ๋ฆฌ์ฝ์ค ๊ณผ์ ์์๋ ๋ฌธ์ ๋ฅผ ํธ๋ ๊ฒ๋ณด๋ค
๊ณผ์ ๋ฅผ ํด๊ฒฐํด๋๊ฐ๋ ๋ฐ์ ๋์ฑ ์ด๋ ค์์ ๊ฒช์๊ธฐ ๋๋ฌธ์
๋ํญ์ด ์์๋์ง๋ง ์ผ๋จ ํ ์ ์๋ ๋งํผ ํด๋ณด๋ ค ํ๋ค.
์ ๋ฐ ๊ณผ์ ํ๋๋ ๋๋ผ ์ ์๊ธฐ๋ฅผ...
์ง์์ ์ผ๋ก ํ๋ฆฌ๋ ๋ฌธ์ ์ ๊ฐ๋ ์ ๋ํด ๊ฐ๋จํ ๊ณต๋ถํด๋ณด์๋ค.
์ฌ๊ทํจ์
1. ๋ฌธ์ ๋ฅผ ์ชผ๊ฐ์ ๊ณ์ฐ์ ์๋ํ๋ค.
์ฌ๊ทํจ์๋ ๋ฌธ์ ๊ฐ ์ผ์ ํ๊ฒ ๊ฐ์ ๋ฐฉ์์ผ๋ก ๊ณ์ ๋ฐ๋ณต๋ ๊ฒฝ์ฐ์ ๋ณดํต ์ฌ์ฉ๋๊ธฐ ๋๋ฌธ์
๋ฌธ์ ๋ฅผ ์ชผ๊ฐ์ ๊ณ์ฐ์ ์๊ฐํ๋, ์ด๋ค ์์ผ๋ก ๋ฐ๋ณต๋๋์ง ๊ท์น์ ์ฐพ์์ผ ํ ํ์๊ฐ ์๋ค.
// ๋ฌธ์ ๋ฅผ ํ๋ฒ์ ํด๊ฒฐํ๋ ๊ฒ์ด ์๋ ์ชผ๊ฐ์ ๋๋์ด์ ์๊ฐํด ๋ณธ๋ค.
arr([10, 3, 6, 2]) = 10 + arrSum([3, 6, 2]);
2. ๋ฌธ์ ๊ฐ ์์์ง์ง ์์ ๋๊น์ง ๋ ์์ ๊ฒฝ์ฐ๋ฅผ ์๊ฐํ๋ค.
๋จ, ์๋ฌด๋ฆฌ ๋ฌธ์ ๊ฐ ์ง์์ ์ผ๋ก ๋ฐ๋ณต๋์ด๋ ๋๋๋ ์์ ์ด ์๊ธฐ ๋๋ฌธ์
๋ฌธ์ ๊ฐ ๋๋๋ ์์ ์๋ ์กฐ๊ฑด๋ฌธ์ ๋ฃ์ด ์ฝ๋๋ฅผ ์์ฑํด์ผ ํ๋ฏ๋ก ๋๋๋ ์ง๊ธ์ ๋ํด์๋ ์ถฉ๋ถํ ์๊ฐํ ํ์๊ฐ ์๋ค.
// ๋ด๊ฐ ์
๋ ฅํ ๋ฐฐ์ด์ด ๋์ด ๋ณด์ผ๋ ๊น์ง ๊ณผ์ ์ ๊ฑฐ์น๋ค.
arrSum([3, 6, 2]) = 3 + arrSum([6, 2]);
arrSum([6, 2]) = 6 + arrSum([2]);
arrSum([2]) = 2 + arrSum([]);
3. ๋ฌธ์ ๊ฐ ๊ฐ๋จ๋ช ๋ฃํด์ ธ์ ํ ์ ์๊ฒ ๋์์ ๊ฒฝ์ฐ์ ๋ฌธ์ ๋ฅผ ์ฐจ๊ทผ์ฐจ๊ทผ ํด๊ฒฐํด ์ค๋ค.
์ด๋์ ์ฃผ์ํ ์ ์ ์ฌ๊ท๋ ์ข ๋ฃ์ง์ ์ ๋ง๋ค์ด ์ฃผ์ง ์์ผ๋ฉด ์๋ฌ๊ฐ ๋์ง ์๋ ์ด์ ๊ณ์ ์คํ๋๊ธฐ ๋๋ฌธ์
์ข ๋ฃ์ง์ ์ ์ ํด์ฃผ๋ ๊ฒ์ ์์ง ๋ง์์ผ ํ๋ค.
arrSum([]) = 0; // ๋ฌธ์ ๊ฐ ๋์ด์ ์์์ง์ง ์๋ ์๊ฐ
// ๊ฐ์ฅ ์์ ๊ฒฝ์ฐ์ ํด๊ฒฐ์ฑ
์ ์ ์ฉํ๋ค.
arrSum([2]) = 2 + arrSum([]) = 2;
arrSum([6, 2]) = 6 + arrSum([2]) = 6 + 2 = 8;
arrSum([3, 6, 2]) = 3 + arrSum([6, 2]) = 3 + 8 = 11;
arrSum([10, 3, 6, 2]) = 10 + arrSum([3, 6, 2]) = 10 + 11 = 2
์ด๋ฐ ์์ผ๋ก ํด๋น ๊ณผ์ ์ ๊ฑฐ์น๊ฒ ๋๋ฉด ์ฌ๊ทํจ์๋ฅผ ๋ง๋ค ์ ์๊ฒ ๋๋ค.
function arrSum(arr) {
if(arr.length === 0) { // ์ฌ๊ทํจ์๊ฐ ๋๋ ์ง์ ์ ์ ์
return 0;
}
let head = arr[0];
let tail = arr.slice(1);
return head + arrSum(tail);
}
'์๋ > Code-States' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[D+34] ์๋ก์ํฌ 4์ผ์ฐจ (0) | 2020.10.10 |
---|---|
[D+33] ์๋ก์ํฌ 3์ผ์ฐจ (0) | 2020.10.09 |
[D+31] ์๋ก์ํฌ 1์ผ์ฐจ (0) | 2020.10.07 |
[D+30] ํ๋ฆฌ์ฝ์ค ๋ง์ง๋ง Pair Programming (0) | 2020.10.06 |
[D+29] ์ฌ๊ทํจ์ (0) | 2020.10.06 |
๋๊ธ