๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
4๏ธโƒฃ Python/Problem Solving

[Python Algorithm] ํ”ผ๋ณด๋‚˜์น˜ ํ•จ์ˆ˜ BOJ #1003

by seolhee2750 2021. 11. 16.
๋ฌธ์ œ

https://www.acmicpc.net/problem/1003

 

1003๋ฒˆ: ํ”ผ๋ณด๋‚˜์น˜ ํ•จ์ˆ˜

๊ฐ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋งˆ๋‹ค 0์ด ์ถœ๋ ฅ๋˜๋Š” ํšŸ์ˆ˜์™€ 1์ด ์ถœ๋ ฅ๋˜๋Š” ํšŸ์ˆ˜๋ฅผ ๊ณต๋ฐฑ์œผ๋กœ ๊ตฌ๋ถ„ํ•ด์„œ ์ถœ๋ ฅํ•œ๋‹ค.

www.acmicpc.net

 

๋‚ด ๋ฌธ์ œ ํ’€์ด
t = int(input())
nums = []
for i in range(t): nums.append(int(input()))

memory = []
for i in range(max(nums)+1):
    if i == 0: memory.append([1, 0])
    elif i == 1: memory.append([0, 1])
    else: memory.append([memory[i-1][0]+memory[i-2][0], memory[i-1][1]+memory[i-2][1]])

for i in nums: print(" ".join(list(map(lambda x: str(x), memory[i]))))

๐Ÿ‘‰ DP ๋ฌธ์ œ๋กœ, ์ผ์ •ํ•œ ๊ทœ์น™์„ ์ฐพ๊ณ  ๋ฉ”๋ชจ์ง€์—์ด์…˜ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜์—ฌ ์—ฐ์‚ฐํ•ด์ฃผ๋Š”๊ฒŒ ํฌ์ธํŠธ!

์‹ค์ œ ํ”ผ๋ณด๋‚˜์น˜ ์—ฐ์‚ฐ์„ ํ•˜๋Š” ์žฌ๊ท€ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“ค์–ด์„œ 0, 1์˜ ํ˜ธ์ถœ์„ ์นด์šดํŠธํ•˜๋ฉด ์‹œ๊ฐ„์ดˆ๊ณผ๊ฐ€ ๋‚จ

๋”ฐ๋ผ์„œ 0, 1์˜ ํ˜ธ์ถœ ํšŸ์ˆ˜๋ฅผ ๊ตฌํ•  ์ˆ˜ ์žˆ๋Š” ์ ํ™”์‹์„ ์ฐพ์•„์•ผ ํ•œ๋‹ค.

 

[์ ํ™”์‹]

  • fibonacci(3)์€ fibonacci(2)์™€ fibonacci(1)์„ ํ˜ธ์ถœ
  • fibonacci(2)๋Š” fibonacci(1)๊ณผ fibonacci(0)์„ ํ˜ธ์ถœ
    n์ด 0์ด๋ฉด [0์ด ํ•œ ๋ฒˆ, 1์ด 0๋ฒˆ] ์ถœ๋ ฅ๋˜๊ณ  n์ด 1์ด๋ฉด [0์ด 0๋ฒˆ, 1์ด 1๋ฒˆ] ์ถœ๋ ฅ๋˜๋Š”๋ฐ
    n์ด 2๋ฉด ๊ฒฐ๊ตญ fibonacci(1)๊ณผ fibonacci(0)์˜ ๊ฒฐ๊ณผ๋ฅผ ํ•ฉํ•œ [0์ด ํ•œ ๋ฒˆ, 1์ด ํ•œ ๋ฒˆ] ์ถœ๋ ฅ๋จ

๋”ฐ๋ผ์„œ [0์ด ์ถœ๋ ฅ๋œ ํšŸ์ˆ˜, 1์ด ์ถœ๋ ฅ๋œ ํšŸ์ˆ˜]๋ฅผ ๋ณด๋ฉด

n์ด 0์ผ ๊ฒฝ์šฐ [1, 0], n์ด 1์ผ ๊ฒฝ์šฐ [0, 1] => n์ด 2์ผ ๊ฒฝ์šฐ [1+0, 0+1]๊ฐ€ ๋œ๋‹ค.

=> memory[n] = [(memory[n-1][0] + memory[n-2][0]), (memory[n-1][1] + memory[n-2][1])]

 

[ํ’€์ด ์„ค๋ช…]

  • ๋ฌธ์ œ์˜ ์ž…๋ ฅ์„ ๋ชจ๋‘ ๋ฐ›์•„๋†“๊ณ , ๊ทธ ์ค‘ ๊ฐ€์žฅ ํฐ ์ˆ˜๊นŒ์ง€ 0, 1์˜ ์ถœ๋ ฅ ํšŸ์ˆ˜๋ฅผ ๊ตฌํ•ด์„œ memory์— ์ €์žฅํ–ˆ๋‹ค.
  • memory[0], [1]์˜ ๊ฒฝ์šฐ์—๋Š” ์—ฐ์‚ฐ์ด ๋ถˆ๊ฐ€ํ•˜๋ฏ€๋กœ ๋”ฐ๋กœ ์กฐ๊ฑด์„ ์„ค์ •ํ•˜์—ฌ ์•Œ๋งž์€ ๋‹ต์„ ๋„ฃ์–ด์ค€๋‹ค.
  • ๊ทธ ์™ธ์˜ ๊ฒฝ์šฐ์—๋Š” memory์— ์œ„์—์„œ ๊ตฌํ•œ ์ ํ™”์‹์˜ ๊ฒฐ๊ณผ์— ํ•ด๋‹นํ•˜๋Š” ๊ฐ’์„ ๋„ฃ์–ด์ฃผ์—ˆ๋‹ค.

 

๐Ÿ’ก ํ”ผ๋“œ๋ฐฑ
  • ์ฒ˜์Œ์— ์ ํ™”์‹์„ ๋„์ถœํ•˜๋Š”๋ฐ์— ์‹œ๊ฐ„์ด ์ข€ ๊ฑธ๋ ธ๋Š”๋ฐ,
    ์ด๋Ÿฐ ๋ฌธ์ œ๋“ค์€ ๋ˆ„์ ํ•˜๋Š” ๊ฐ’์„ ์ด์šฉํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๋‹ค๋Š”๊ฑธ ๊ธฐ์–ตํ•˜๊ณ  ์žˆ์–ด์•ผ๊ฒ ๋‹ค.

 

๋Œ“๊ธ€