ํ™ˆ [DSA] ์žฌ๊ท€ ํ•จ์ˆ˜
ํฌ์ŠคํŠธ
์ทจ์†Œ

[DSA] ์žฌ๊ท€ ํ•จ์ˆ˜


Title


๊ฐœ์š”

์žฌ๊ท€๋Š” ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค. ์ฝ”๋“œ์—์„œ ์žฌ๊ท€๋Š” ์ž๊ธฐ ์ž์‹ ์„ ํ˜ธ์ถœํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ตฌํ˜„๋œ๋‹ค.

์žฌ๊ท€ ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ๋ฐ˜๋Œ€๋Š” ๋ฐ˜๋ณต ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค. ์–ด๋–ค ๋ฐ˜๋ณต ์•Œ๊ณ ๋ฆฌ์ฆ˜๋„ ์žฌ๊ท€์ ์œผ๋กœ ์ž‘์„ฑ๋  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์ฆ๋ช…ํ•˜๋Š” ์—ฐ๊ตฌ ๋ถ„์•ผ๊ฐ€ ์žˆ๋‹ค. ๋ฐ˜๋ณต ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ๋ฐ˜๋ณต์„ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ํ•˜๊ธฐ ์œ„ํ•ด for ๋ฌธ๊ณผ while ๋ฌธ์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฐ˜๋ฉด, ์žฌ๊ท€ ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ๋™์ผํ•œ ๋…ผ๋ฆฌ๋ฅผ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ํ•˜๊ธฐ ์œ„ํ•ด ํ•จ์ˆ˜ ํ˜ธ์ถœ์„ ์‚ฌ์šฉํ•œ๋‹ค.

1๋ถ€ํ„ฐ 10๊นŒ์ง€์˜ ์ˆซ์ž๋ฅผ ์ถœ๋ ฅํ•˜๊ณ  ์‹ถ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด๋ณด์ž. ๋‹ค์Œ์€ ๋ฐ˜๋ณต ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์œ„ํ•œ ์˜์‚ฌ ์ฝ”๋“œ์ด๋‹ค:

1
2
3
for (int i = 1; i <= 10; i++) {
    print(i)
}

์—ฌ๊ธฐ์— ๋™๋“ฑํ•œ ์žฌ๊ท€ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์œ„ํ•œ ์˜์‚ฌ ์ฝ”๋“œ๊ฐ€ ์žˆ๋‹ค:

1
2
3
4
5
6
function fn(i):
    print(i)
    fn(i + 1)
    return

fn(1)

๊ฐ๊ฐ์˜ fn ํ˜ธ์ถœ์€ ๋จผ์ € i๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค(1๋ถ€ํ„ฐ ์‹œ์ž‘), ๊ทธ๋ฆฌ๊ณ  i๋ฅผ ์ฆ๊ฐ€์‹œํ‚จ ์ƒํƒœ๋กœ fn์„ ๋‹ค์‹œ ํ˜ธ์ถœํ•œ๋‹ค(๋‹ค์Œ ์ˆซ์ž๋ฅผ ์ถœ๋ ฅํ•˜๊ธฐ ์œ„ํ•ด).

์ฒซ ๋ฒˆ์งธ ํ•จ์ˆ˜ ํ˜ธ์ถœ์€ 1์„ ์ถœ๋ ฅํ•œ ๋‹ค์Œ, fn(2)๋ฅผ ํ˜ธ์ถœํ•œ๋‹ค. fn(2)์—์„œ๋Š” 2๋ฅผ ์ถœ๋ ฅํ•œ ๋‹ค์Œ, fn(3)์„ ํ˜ธ์ถœํ•œ๋‹ค. ์ด ๊ณผ์ •์ด ๊ณ„์†๋œ๋‹ค.

ํ•˜์ง€๋งŒ ์ด ์ฝ”๋“œ๋Š” ์‚ฌ์‹ค ์–ด๋”˜๊ฐ€ ์ž˜๋ชป๋˜์—ˆ๋‹ค. ํ˜น์‹œ ๋ฌธ์ œ์ ์ด ๋ณด์ด๋Š”๊ฐ€? ์ € ์ฝ”๋“œ๋Š” ํ•จ์ˆ˜ ํ˜ธ์ถœ์ด ์ ˆ๋Œ€ ๋ฉˆ์ถ”์ง€ ์•Š์„ ๊ฒƒ์ด๋‹ค! ์ด ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ์ž์—ฐ์ˆ˜(์–‘์˜ ์ •์ˆ˜)๊ฐ€ ๋ฌดํ•œํžˆ ์ถœ๋ ฅ๋  ๊ฒƒ์ด๋‹ค(๋˜๋Š” ์ปดํ“จํ„ฐ๊ฐ€ ํญ๋ฐœํ•  ๋•Œ๊นŒ์ง€). ์œ„ ์ฝ”๋“œ์—์„œ๋Š” fn(i + 1)์ด return ์ค„๋ณด๋‹ค ์•ž์— ์˜ค๊ธฐ ๋•Œ๋ฌธ์— return ์ค„์—๋Š” ์ ˆ๋Œ€ ๋„๋‹ฌํ•˜์ง€ ์•Š๋Š”๋‹ค.

์šฐ๋ฆฌ๋Š” ์žฌ๊ท€๊ฐ€ ๋ฉˆ์ถ”๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•œ ์ข…๋ฃŒ ์กฐ๊ฑด์ด ํ•„์š”ํ•˜๋‹ค. ์ข…๋ฃŒ ์กฐ๊ฑด์€ ์žฌ๊ท€ ํ•จ์ˆ˜์˜ ์‹œ์ž‘ ๋ถ€๋ถ„์— ์žˆ๋Š” ํ˜ธ์ถœ์„ ์ค‘๋‹จํ•˜๋Š” ์กฐ๊ฑด์ด๋‹ค.

1
2
3
4
5
6
7
8
9
function fn(i):
    if i > 10:
        return

    print(i)
    fn(i + 1)
    return

fn(1)

fn(10)์„ ํ˜ธ์ถœํ•œ ํ›„, ์šฐ๋ฆฌ๋Š” 10์„ ์ถœ๋ ฅํ•˜๊ณ  fn(11)์„ ํ˜ธ์ถœํ•œ๋‹ค. fn(11) ํ˜ธ์ถœ์—์„œ ์šฐ๋ฆฌ๋Š” ์ข…๋ฃŒ ์กฐ๊ฑด์„ ์ถฉ์กฑ์‹œ์ผœ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ์ด์ œ ์šฐ๋ฆฌ๋Š” fn(10) ํ˜ธ์ถœ๋กœ ๋Œ์•„๊ฐ€์„œ ๋‹ค์Œ ์ค„, ์ฆ‰ return ๋ฌธ์œผ๋กœ ์ด๋™ํ•œ๋‹ค. ์ด๊ฒƒ์€ ์šฐ๋ฆฌ๊ฐ€ fn(9) ํ˜ธ์ถœ๋กœ ๋Œ์•„๊ฐ€๊ฒŒ ํ•˜๊ณ , ์ด ๊ณผ์ •์ด fn(1) ํ˜ธ์ถœ์—์„œ ๋ฐ˜ํ™˜ํ•  ๋•Œ๊นŒ์ง€ ๊ณ„์†๋œ๋‹ค.

์žฌ๊ท€์— ๋Œ€ํ•ด ์ดํ•ดํ•ด์•ผ ํ•  ์ค‘์š”ํ•œ ์‚ฌํ•ญ์€ ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰๋˜๋Š” ์ˆœ์„œ, ์ฆ‰ ์ปดํ“จํ„ฐ๊ฐ€ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜๋Š” ์ˆœ์„œ์ด๋‹ค. ๋ฐ˜๋ณต ํ”„๋กœ๊ทธ๋žจ์˜ ๊ฒฝ์šฐ ์‰ฝ๋‹ค - ๋งจ ์œ„์—์„œ ์‹œ์ž‘ํ•˜์—ฌ ์ค„ ๋ณ„๋กœ ์ง„ํ–‰ํ•œ๋‹ค. ์žฌ๊ท€์˜ ๊ฒฝ์šฐ, ํ˜ธ์ถœ์ด ์„œ๋กœ ์œ„์— ์Œ“์ผ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ํ˜ผ๋ž€์Šค๋Ÿฌ์šธ ์ˆ˜ ์žˆ๋‹ค. ๋‹ค์‹œ ์ˆซ์ž๋ฅผ ์ถœ๋ ฅํ•˜๋˜, ์ด๋ฒˆ์—๋Š” 3๊นŒ์ง€๋งŒ ์ถœ๋ ฅํ•ด๋ณด์ž. ๋˜ ๋‹ค๋ฅธ print ๋ฌธ์„ ์ถ”๊ฐ€ํ•˜๊ณ  ์ค„ ๋ฒˆํ˜ธ๋„ ๋งค๊ฒจ๋ณด์ž:

1
2
3
4
5
6
7
8
9
10
function fn(i):
1.  if i > 3:
2.    return

3.  print(i)
4.  fn(i + 1)
5.  print(f"i = {i}์ธ ํ˜ธ์ถœ ์ข…๋ฃŒ")
6.  return

fn(1)

์ด ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ์ถœ๋ ฅ์—์„œ ๋‹ค์Œ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค:

1
2
3
4
5
6
// 1
// 2
// 3
// i = 3์ธ ํ˜ธ์ถœ ์ข…๋ฃŒ
// i = 2์ธ ํ˜ธ์ถœ ์ข…๋ฃŒ
// i = 1์ธ ํ˜ธ์ถœ ์ข…๋ฃŒ

๋ณด๋‹ค์‹œํ”ผ, ํ…์ŠคํŠธ๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ์ค„์€ ์—ญ์ˆœ์œผ๋กœ ์‹คํ–‰๋œ๋‹ค. ์›๋ž˜์˜ fn(1) ํ˜ธ์ถœ์€ ๋จผ์ € 1์„ ์ถœ๋ ฅํ•œ ๋‹ค์Œ, fn(2)๋กœ ์ด๋™ํ•˜์—ฌ 2๋ฅผ ์ถœ๋ ฅํ•˜๊ณ , ๊ทธ ๋‹ค์Œ fn(3)์œผ๋กœ ์ด๋™ํ•˜์—ฌ 3์„ ์ถœ๋ ฅํ•œ ๋‹ค์Œ, fn(4)๋กœ ์ด๋™ํ•œ๋‹ค. ์ด์ œ ์ค‘์š”ํ•œ ๋ถ€๋ถ„์€ ์žฌ๊ท€๊ฐ€ ์–ด๋–ป๊ฒŒ โ€œ์œ„๋กœโ€ โ€œ๋Œ์•„๊ฐ€๋Š”์ง€์ด๋‹ค. fn(4)๋Š” ์ข…๋ฃŒ ์กฐ๊ฑด์„ ์ถฉ์กฑ์‹œ์ผœ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ์ด์ œ ์šฐ๋ฆฌ๋Š” i = 3์ธ ํ•จ์ˆ˜ ํ˜ธ์ถœ๋กœ ๋Œ์•„๊ฐ€๊ณ  ์ค„ 4๊ฐ€ ๋๋‚ฌ์œผ๋ฏ€๋กœ ์ค„ 5๋กœ ์ด๋™ํ•˜์—ฌ "i = 3์ธ ํ˜ธ์ถœ ์ข…๋ฃŒ"๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค. ๊ทธ ์ค„์ด ์‹คํ–‰๋˜๋ฉด, ์šฐ๋ฆฌ๋Š” ๋‹ค์Œ ์ค„๋กœ ์ด๋™ํ•˜๋Š”๋ฐ, ๊ฑฐ๊ธด return์ด๋‹ค. ์ด์ œ ์šฐ๋ฆฌ๋Š” i = 2์ธ ํ•จ์ˆ˜ ํ˜ธ์ถœ๋กœ ๋Œ์•„๊ฐ€๊ณ  ์ค„ 4๊ฐ€ ๋๋‚ฌ์œผ๋ฏ€๋กœ ๋‹ค์‹œ ๋‹ค์Œ ์ค„๋กœ ์ด๋™ํ•˜์—ฌ "i = 2์ธ ํ˜ธ์ถœ ์ข…๋ฃŒ"๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค. ์ด๊ฒƒ์€ ์›๋ž˜์˜ fn(1) ํ˜ธ์ถœ์ด ๋ฐ˜ํ™˜๋  ๋•Œ๊นŒ์ง€ ๋ฐ˜๋ณต๋œ๋‹ค.

๋ชจ๋“  ํ•จ์ˆ˜ ํ˜ธ์ถœ์€ ๋ฐ˜ํ™˜๋  ๋•Œ๊นŒ์ง€ โ€œ์กด์žฌโ€ํ•œ๋‹ค. ๋‹ค๋ฅธ ํ•จ์ˆ˜ ํ˜ธ์ถœ๋กœ ์ด๋™ํ•  ๋•Œ ์ด์ „ ํ•จ์ˆ˜ ํ˜ธ์ถœ์€ ์ƒˆ๋กœ์šด ํ•จ์ˆ˜ ํ˜ธ์ถœ์ด ๋ฐ˜ํ™˜๋  ๋•Œ๊นŒ์ง€ ๋Œ€๊ธฐํ•œ๋‹ค. ํ˜ธ์ถœ ์ˆœ์„œ๋Š” ๊ธฐ์–ต๋˜๋ฉฐ, ํ•จ์ˆ˜ ๋‚ด์˜ ์ค„์€ ์ˆœ์„œ๋Œ€๋กœ ์‹คํ–‰๋œ๋‹ค.

๊ฐ ํ•จ์ˆ˜ ํ˜ธ์ถœ์€ ์ž์ฒด์ ์ธ ๋กœ์ปฌ ์Šค์ฝ”ํ”„๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค๋Š” ์ ์— ์œ ์˜ํ•ด์•ผ ํ•œ๋‹ค. ์œ„์˜ ์˜ˆ์—์„œ, ์šฐ๋ฆฌ๊ฐ€ f(3)์„ ํ˜ธ์ถœํ•  ๋•Œ, i์˜ 3๊ฐœ์˜ โ€œ๋ฒ„์ „โ€์ด ๋™์‹œ์— ์กด์žฌํ•œ๋‹ค. ์ฒซ ๋ฒˆ์งธ ํ˜ธ์ถœ์—๋Š” i = 1์ด ์žˆ๊ณ , ๋‘ ๋ฒˆ์งธ ํ˜ธ์ถœ์—๋Š” i = 2๊ฐ€ ์žˆ์œผ๋ฉฐ, ์„ธ ๋ฒˆ์งธ ํ˜ธ์ถœ์—๋Š” i = 3์ด ์žˆ๋‹ค. ๋งŒ์•ฝ ์šฐ๋ฆฌ๊ฐ€ f(3) ํ˜ธ์ถœ์—์„œ i += 1์„ ์ˆ˜ํ–‰ํ•œ๋‹ค๋ฉด, ๊ทธ๋•Œ i๋Š” 4๊ฐ€ ๋˜์ง€๋งŒ, ์˜ค์ง f(3) ํ˜ธ์ถœ์—์„œ๋งŒ ๊ทธ๋ ‡๋‹ค. ๋‹ค๋ฅธ ๋‘ โ€œ๋ฒ„์ „โ€์˜ i๋Š” ์„œ๋กœ ๋‹ค๋ฅธ ์Šค์ฝ”ํ”„์— ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์˜ํ–ฅ์„ ๋ฐ›์ง€ ์•Š๋Š”๋‹ค.


๋ฌธ์ œ ๋ถ„์„ํ•˜๊ธฐ

์œ„์˜ ์ถœ๋ ฅ ์˜ˆ์ œ๋Š” ์ƒ๋‹นํžˆ ๋ฌด์˜๋ฏธํ•˜๋‹ค. ๋‹จ์ˆœํžˆ ์ˆซ์ž๋ฅผ ์ถœ๋ ฅํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด for ๋ฐ˜๋ณต๋ฌธ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๋” ์‰ฝ๋‹ค. ์žฌ๊ท€๊ฐ€ ๋น›์„ ๋ฐœํ•˜๋Š” ๊ณณ์€ ๋ฌธ์ œ๋ฅผ โ€œํ•˜์œ„ ๋ฌธ์ œโ€๋กœ ๋ถ„ํ•ดํ•˜๊ณ , ๊ทธ ํ•ด๊ฒฐ์ฑ…์„ ๊ฒฐํ•ฉํ•˜์—ฌ ์›๋ž˜ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ๋•Œ์ด๋‹ค.

ํ”ผ๋ณด๋‚˜์น˜ ์ˆ˜์— ๋Œ€ํ•ด ์‚ดํŽด๋ณด์ž. ํ”ผ๋ณด๋‚˜์น˜ ์ˆ˜๋Š” 0, 1๋กœ ์‹œ์ž‘ํ•˜๋Š” ์ˆซ์ž ์‹œํ€€์Šค๋‹ค. ๊ทธ ๋‹ค์Œ ๊ฐ ์ˆซ์ž๋Š” ์ด์ „ ๋‘ ์ˆซ์ž์˜ ํ•ฉ์œผ๋กœ ์ •์˜๋œ๋‹ค. ์ฒ˜์Œ ๋ช‡ ๊ฐœ์˜ ํ”ผ๋ณด๋‚˜์น˜ ์ˆ˜๋Š” 0, 1, 1, 2, 3, 5, 8์ด๋‹ค. ๋” ํ˜•์‹์ ์œผ๋กœ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.

$F{n}$ = $F_{n - 1}$ + $F_{n - 2}$

์ด๊ฒƒ์„ ์žฌ๊ท€ ๊ด€๊ณ„ ํ˜น์€ ์ ํ™”์‹์ด๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค - ํ•ญ๋ชฉ๋“ค์„ ์„œ๋กœ ์—ฐ๊ฒฐํ•˜๋Š” ๋ฐฉ์ •์‹์ด๋‹ค.

ํ”ผ๋ณด๋‚˜์น˜ ์ˆ˜์—ด์˜ $n$๋ฒˆ์งธ ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜ F(n)์„ ์˜์‚ฌ์ฝ”๋“œ๋กœ ์ž‘์„ฑํ•ด๋ณด์ž. ์žฌ๊ท€ ํ•จ์ˆ˜์™€ ํ•จ๊ป˜ ์ข…๋ฃŒ ์กฐ๊ฑด์„ ์žŠ์ง€ ๋ง์•„์•ผ ํ•œ๋‹ค. ์ด ๊ฒฝ์šฐ ์ข…๋ฃŒ ์กฐ๊ฑด์€ ๋ช…์‹œ์ ์œผ๋กœ ์ •์˜๋˜์–ด ์žˆ๋‹ค: F(0) = 0๊ณผ F(1) = 1.

1
2
3
4
5
6
7
function F(n):
    if n <= 1:
        return n

    oneBack = F(n - 1)
    twoBack = F(n - 2)
    return oneBack + twoBack

F(3)์„ ์ฐพ๊ณ  ์‹ถ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด๋ณด์ž. F(3)์„ ํ˜ธ์ถœํ•˜๋ฉด ๊ฐ ๋“ค์—ฌ์“ฐ๊ธฐ ์ˆ˜์ค€์ด ํ•จ์ˆ˜ ํ˜ธ์ถœ์˜ ๋ฒ”์œ„๋ฅผ ๋‚˜ํƒ€๋‚ด๋ฉฐ, ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํ๋ฆ„์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค:

1
2
3
4
5
6
7
8
9
oneBack = F(2)
    oneBack = F(1)
        F(1) = 1
    twoBack = F(0)
        F(0) = 0
    F(2) = oneBack + twoBack = 1
twoBack = F(1)
    F(1) = 1
F(3) = oneBack + twoBack = 2

๋ณด๋‹ค์‹œํ”ผ, ์›๋ž˜ ๋ฌธ์ œ F(3)์„ ๋‘ ๊ฐœ์˜ ๋” ์ž‘์€ ํ•˜์œ„ ๋ฌธ์ œ, ์ฆ‰ F(2)์™€ F(1)๋กœ ๋ถ„ํ•ดํ–ˆ๋‹ค. ์ ํ™”์‹๊ณผ ์ข…๋ฃŒ ์กฐ๊ฑด์„ ๊ฒฐํ•ฉํ•จ์œผ๋กœ์จ, ์šฐ๋ฆฌ๋Š” ํ•˜์œ„ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ณ  ๊ทธ ํ•ด๊ฒฐ์ฑ…์„ ์‚ฌ์šฉํ•˜์—ฌ ์›๋ž˜ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ๋‹ค.

์ด๊ฒƒ์ด ์žฌ๊ท€์˜ ๊ฐ€์žฅ ์ผ๋ฐ˜์ ์ธ ์‚ฌ์šฉ ๋ฐฉ๋ฒ•์ด๋‹ค - ์žฌ๊ท€ ํ•จ์ˆ˜๊ฐ€ ์ฃผ์–ด์ง„ ์ž…๋ ฅ์— ๋Œ€ํ•ด ํ•ด๊ฒฐํ•˜๋ ค๋Š” ๋ฌธ์ œ์˜ ๋‹ต์„ ๋ฐ˜ํ™˜ํ•˜๋„๋ก ํ•œ๋‹ค. ์ด ์˜ˆ์—์„œ, ์šฐ๋ฆฌ๊ฐ€ ์ฃผ์–ด์ง„ ์ž…๋ ฅ์— ๋Œ€ํ•ด ํ•ด๊ฒฐํ•˜๋ ค๋Š” ๋ฌธ์ œ๋Š” โ€œ$n$๋ฒˆ์งธ ํ”ผ๋ณด๋‚˜์น˜ ์ˆ˜๋Š” ๋ฌด์—‡์ธ๊ฐ€?โ€์ด๋‹ค. ๋”ฐ๋ผ์„œ, ์šฐ๋ฆฌ๋Š” ํ•จ์ˆ˜๊ฐ€ ์ž…๋ ฅ $n$์— ๋”ฐ๋ผ ํ”ผ๋ณด๋‚˜์น˜ ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋„๋ก ์„ค๊ณ„ํ–ˆ๋‹ค. ์ข…๋ฃŒ ์กฐ๊ฑด๊ณผ ์ ํ™”์‹์„ ๊ฒฐ์ •ํ•จ์œผ๋กœ์จ, ์šฐ๋ฆฌ๋Š” ํ•จ์ˆ˜๋ฅผ ์‰ฝ๊ฒŒ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.

์ด ์•„์ด๋””์–ด๋ฅผ ๋”ฐ๋ฅด๋ฉด, ํ•˜์œ„ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๊ฒƒ์€ ์‰ฝ๋‹ค - 100๋ฒˆ์งธ ํ”ผ๋ณด๋‚˜์น˜ ์ˆ˜๋ฅผ ์›ํ•œ๋‹ค๋ฉด, ๊ทธ๊ฒƒ์ด 99๋ฒˆ์งธ์™€ 98๋ฒˆ์งธ ํ”ผ๋ณด๋‚˜์น˜ ์ˆ˜์˜ ํ•ฉ์ž„์„ ์ •์˜์— ์˜ํ•ด ์•Œ๊ณ  ์žˆ๋‹ค. F(100)์— ๋Œ€ํ•œ ํ•จ์ˆ˜ ํ˜ธ์ถœ์—์„œ, F(99)์™€ F(98)์„ ํ˜ธ์ถœํ•˜๋ฉด ๊ทธ ์ˆซ์ž๋“ค์„ ์–ป์„ ๊ฒƒ์ž„์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.


์ถœ์ฒ˜: Leetcode

์ด ํฌ์ŠคํŠธ๋Š” ์ €์ž‘๊ถŒ์ž์˜ CC BY-NC-ND 4.0 ๋ผ์ด์„ผ์Šค๋ฅผ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค.
์ตœ๊ทผ ์—…๋ฐ์ดํŠธ
์ธ๊ธฐ ํƒœ๊ทธ
๋ฐ”๋กœ๊ฐ€๊ธฐ

[DSA] ๋น…์˜ค ํ‘œ๊ธฐ๋ฒ•

[DSA] ๋ฐฐ์—ด๊ณผ ๋ฌธ์ž์—ด

์ธ๊ธฐ ํƒœ๊ทธ