์ ๋ ฅ
์ฒซ์งธ ์ค์ ํ ์คํธ ์ผ์ด์ค์ ๊ฐ์ T๊ฐ ์ฃผ์ด์ง๋ค.
๊ฐ ํ ์คํธ ์ผ์ด์ค๋ ํ ์ค๋ก ์ด๋ฃจ์ด์ ธ ์๊ณ , N์ด ์ฃผ์ด์ง๋ค. N์ 40๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ์์ฐ์ ๋๋ 0์ด๋ค.
์ถ๋ ฅ
๊ฐ ํ ์คํธ ์ผ์ด์ค๋ง๋ค 0์ด ์ถ๋ ฅ๋๋ ํ์์ 1์ด ์ถ๋ ฅ๋๋ ํ์๋ฅผ ๊ณต๋ฐฑ์ผ๋ก ๊ตฌ๋ถํด์ ์ถ๋ ฅํ๋ค.
ํด๊ฒฐ ๋ฐฉ๋ฒ
ํผ๋ณด๋์น ์ฌ๊ท ํจ์์ ๊ดํ ๋ฌธ์ ๋ค.
0๊ณผ 1์ด ํธ์ถ๋๋ ํ์ ์์ฒด๋ ๊ท์น์ด ์์์ ์ ์ ์๋ค.
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | |
0 | 1 | 0 | 1 | 1 | 2 | 3 | 5 | 8 |
1 | 0 | 1 | 1 | 2 | 3 | 5 | 8 | 13 |
์์ ๊ฐ์ด ํธ์ถ๋๋ ํ์๋ (n-2) + (n-1) (n≥2์ผ ๋) ๊ท์น์ด ์์์ ์ ์ ์๋ค.
์ฌ๊ท๋ฅผ ์ด์ฉํ์ง ์๊ณ dp๋ฅผ ํตํด ์ ๊ทผํ๋ค.
ํด๊ฒฐ ๊ณผ์
n = 0, 1์ ๋ํ 0๊ณผ 1์ ํธ์ถ ํ์๋ ๋ฏธ๋ฆฌ ์ ์ธํด๋๊ณ n≥2์ ๋ํด์๋ dp๋ฅผ ํตํด ํด๊ฒฐํ๋ค.
์ต์ข ์ฝ๋๋
def fibonacci(n):
countZero = [1, 0]
countOne = [0, 1]
if n == 0:
print(countZero[0], countOne[0])
elif n == 1:
print(countZero[1], countOne[1])
else:
for i in range(2, n+1):
countZero.append(countZero[i-1] + countZero[i-2])
countOne.append(countOne[i-1] + countOne[i-2])
print(countZero[n], countOne[n])
def main():
n = int(input())
for _ in range(n):
m = int(input())
fibonacci(m)
if __name__ == "__main__":
main()
'โ๏ธ ์ฝํ ์ค๋น > Dynamic Programming' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋์ ๊ณํ๋ฒ 1] [C++] 1932๋ฒ. ์ ์ ์ผ๊ฐํ (0) | 2021.01.13 |
---|---|
[๋์ ๊ณํ๋ฒ 1] [C++] 1149๋ฒ. RGB ๊ฑฐ๋ฆฌ (0) | 2021.01.13 |
[๋์ ๊ณํ๋ฒ 1] [C++] 9461๋ฒ. ํ๋๋ฐ ์์ด (0) | 2021.01.13 |
[๋์ ๊ณํ๋ฒ 1] [Python] 1904๋ฒ. 01ํ์ผ (0) | 2021.01.12 |
[๋์ ๊ณํ๋ฒ 1] [Python] 9184๋ฒ. ์ ๋๋ ํจ์ ์คํ (0) | 2021.01.12 |