๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
์‹œ๋„/Code-States

[D+32] ์†”๋กœ์œ„ํฌ 2์ผ์ฐจ

by ๐Ÿ‡๋ฐ•๋ด‰๋ด‰๐Ÿ‡ 2020. 10. 8.

 

 

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);
}

 

 

๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€