Dynamic Programming(DP)๋ก๋ ๋ถ๋ฆฐ๋ค. ๋๋ฅด๋ง๋ฌด๊ฐ์...
ํผ๋ณด๋์น(Fibonacci) ์์ด
def solution(n):
a, b = 0, 1
for _ in range(n+1):
a, b = b, a+b
return a
๊ธฐ๋ณธ ํํ๋ ์์ ๊ฐ์ผ๋ฉฐ a, b์ ๊ฐ์ ๋ณ๊ฒฝํ๊ฑฐ๋ ์ถ๊ฐ์ ์ธ ๊ตฌ๋ฌธ์ ๋ฃ์ด ํ์ฉํ ์ ์๋ค.
์์ ๋๋ฅด๋ ์กฑ์กฑ ์ ํ์ ๋ฌธ์ ๊ฐ ๋ ๋ฐ๊ฒจ์ค๋ค.
์ธ๊ณต์ง๋ฅํ ์นดํ ์ฐฝ์ ์ ์๊ฐ์ค์ด๋ค.
[ํ๋ก๊ทธ๋๋จธ์ค Lv2] ๋ฉ๋ฆฌ ๋ฐ๊ธฐ
https://school.programmers.co.kr/learn/courses/30/lessons/12914
ํ๋ก๊ทธ๋๋จธ์ค
์ฝ๋ ์ค์ฌ์ ๊ฐ๋ฐ์ ์ฑ์ฉ. ์คํ ๊ธฐ๋ฐ์ ํฌ์ง์ ๋งค์นญ. ํ๋ก๊ทธ๋๋จธ์ค์ ๊ฐ๋ฐ์ ๋ง์ถคํ ํ๋กํ์ ๋ฑ๋กํ๊ณ , ๋์ ๊ธฐ์ ๊ถํฉ์ด ์ ๋ง๋ ๊ธฐ์ ๋ค์ ๋งค์นญ ๋ฐ์ผ์ธ์.
programmers.co.kr
1์ ์ด๋ํ ๊ฒฝ์ฐ -> [1]
2๋ฅผ ์ด๋ํ ๊ฒฝ์ฐ -> [1, 1], [2]
3์ ์ด๋ํ ๊ฒฝ์ฐ -> [1, 1, 1], [2, 1], [1, 2]
F(1) -> 1
F(2) -> 2
F(3) -> 3 ์์ ์ ์ ์๋ค.
๋ฐ๋ผ์ ์ ํ์์ ์ด์ฉํ์ฌ,
def solution(n):
a, b = 0, 1
for _ in range(n):
a, b = b, (a+b) % 1234567
return b
๋๋,
def solution(n):
a, b = 1, 1
for _ in range(n):
a, b = b, (a+b) % 1234567
return a
๋ก ํ์ด๋ณผ ์ ์๋ค.
๋ณธ๋๋ผ๋ฉด F(1) -> 1, F(2) -> 1, F(3) -> 2๊ฐ ๋์์ผํ์ง๋ง
๋ฌธ์ ์์๋ F(n+1)์ ๊ฐ์ด ํด๋ต์ด๊ธฐ ๋๋ฌธ์ด๋ค.