๋ฌธ์
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์ ์์์ ๊ตฌํ ์ ํ์์ ๊ฒฐ๊ณผ์ ํด๋นํ๋ ๊ฐ์ ๋ฃ์ด์ฃผ์๋ค.
๐ก ํผ๋๋ฐฑ
- ์ฒ์์ ์ ํ์์ ๋์ถํ๋๋ฐ์ ์๊ฐ์ด ์ข ๊ฑธ๋ ธ๋๋ฐ,
์ด๋ฐ ๋ฌธ์ ๋ค์ ๋์ ํ๋ ๊ฐ์ ์ด์ฉํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค๋๊ฑธ ๊ธฐ์ตํ๊ณ ์์ด์ผ๊ฒ ๋ค.
'4๏ธโฃ Python > Problem Solving' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Python Algorithm] ํ๋ฒํ ๋ฐฐ๋ญ BOJ #12865 (2) | 2021.11.25 |
---|---|
[Python Algorithm] ์ซ์์ ํํ Programmers(Lv.2) (0) | 2021.11.22 |
[Python Algorithm] ํ๋๋ฐ ์์ด BOJ #9461 (0) | 2021.11.16 |
[Python Algorithm] 01ํ์ผ BOJ #1904 (0) | 2021.11.16 |
[Python Algorithm] ์ ๋๋ ํจ์ ์คํ BOJ #9184 (0) | 2021.11.16 |
๋๊ธ