~๋ชฉ์ฐจ~
๋ฌธ์
https://www.acmicpc.net/problem/1003
๋ฌธ์ ํด๊ฒฐ ํฌ์ธํธ
- DP
- ์ ๋ ฅ๊ฐ(1~40) ์ ๋ฐ๋ผ 0๊ณผ 1์ด ๋ถ๋ฆฐ ํ์๋ฅผ ์ ํ์์ ์ด์ฉํ์ฌ ๊ตฌํ ์ ์๋ค
- ์ ๋ ฅ๊ฐ 0์ 0์ด 1ํ/1์ด 0ํ ๋ถ๋ฆฐ๋ค. ์ ๋ ฅ๊ฐ 1์ 0์ด 0ํ/1์ด 1ํ ๋ถ๋ฆฐ๋ค.
- ์ ๋ ฅ๊ฐ์ด 2๋ผ๋ฉด f(2) = f(1) + f(0) ์ด๋ฏ๋ก 1์ด ํ ๋ฒ, 0์ด ํ ๋ฒ ๋ถ๋ฆฐ๋ค.
- ์ ๋ ฅ๊ฐ์ด 3์ด๋ผ๋ฉด f(3) = f(2) + f(1) ์ด๋ฏ๋ก
f(2) ์คํ์ 1ํ ๋ฒ, 0 ํ ๋ฒ ๋ถ๋ฆฐ ๊ฒ๊ณผ 1์ด ํ ๋ฒ ๋ถ๋ฆฐ ๊ฒ์ ๋ํ๋ฉด 1์ด 2๋ฒ 0์ด 1๋ฒ ๋ถ๋ฆฐ๋ค.
- ์ด๋ฅผ ํตํ์ฌ ์ ํ์์ ๋์ถํ ์ ์๋ค.
i == 0 ์ผ ๋, 0 1ํ, 1 0ํ
i == 1 ์ผ ๋, 0 0ํ, 1 1ํ
i > 2 ์ผ ๋, a(i) = a(i-2) + a(i-1)
์์ฑ ์ฝ๋
import sys
input = sys.stdin.readline
T = int(input()) # test case
alist = [[1, 0], [0, 1]] + [[0, 0] for _ in range(39)] #0 ~ 40๊น์ง [0์ด ๋ถ๋ฆฐ ํ์, 1์ด ๋ถ๋ฆฐ ํ์] ์ด๊ธฐํ
for i in range(2, 41): # i >= 2์ผ ๋, a(i) = a(i-1) + a(i-2) ์ ํ์
alist[i][0] = alist[i-2][0] + alist[i-1][0]
alist[i][1] = alist[i-2][1] + alist[i-1][1]
for _ in range(T):
n = int(input()) # ๊ฐ ์์ฒญ์ ๋ฐ๋ผ ๊ฒฐ๊ณผ๊ฐ ์ถ๋ ฅ
print(alist[n][0], alist[n][1])
๋์์ด ๋์ จ๋ค๋ฉด ์ข์์ ๋๋ฌ์ฃผ์ธ์๐
'๐๋ฌธ์ ํ์ด > ๐งฉBaekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Python] ๋ฐฑ์ค 1966 ํ๋ฆฐํฐ ํ (0) | 2023.06.11 |
---|---|
[Python] ๋ฐฑ์ค 16953 A -> B | ๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ | BFS (0) | 2023.06.09 |
[Python] ๋ฐฑ์ค 9095 1, 2, 3 ๋ํ๊ธฐ | DP (0) | 2023.06.07 |
[Python] ๋ฐฑ์ค 1715 ์นด๋ ์ ๋ ฌํ๊ธฐ | ๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ (0) | 2023.06.06 |
[Python] ๋ฐฑ์ค 1774 ์ฐ์ฃผ์ ๊ณผ์ ๊ต๊ฐ | ํฌ๋ฃจ์ค์นผ ์๊ณ ๋ฆฌ์ฆ (0) | 2023.05.29 |