ํฐ์คํ ๋ฆฌ ๋ทฐ
728x90
๐ฉ ๋์ ํ๋ก๊ทธ๋๋ฐ(DP)
thinking
1. ์๊ฐ์ด๊ณผ ๋ ์ฝ๋
ํผ๋ณด๋์น ์์ด ์ฝ๋์ ๋์ผํ๊ฒ ์ง๋, n == 0 or 1 ์ธ ๊ฒฝ์ฐ 0๊ณผ 1์ ํธ์ถํ์๋ฅผ ์นด์ดํธํ๋๋ก ํจ์๋ฅผ ๊ตฌ์ฑํ๋ค.
output์ ๋ง๊ฒ ๋์์ง๋ง ์๊ฐ์ด๊ณผ ๋ธ
2. success ๐
0ํธ์ถํ์์ 1ํธ์ถํ์๋ฅผ ๋ฆฌ์คํธ๋ก ๋ง๋ค์ด ํผ๋ณด๋์น ์์ด์ฒ๋ผ n-1
, n-2
์ ํธ์ถํ์๋ฅผ ๋ํ๋ ๋ฐฉ์์ผ๋ก ์ฝ๋๋ฅผ ์งฌ.
n = 8
์ธ ๊ฒฝ์ฐ, cnt_0 = [1, 0, 1, 1, 2, 3, 5, 8]
, cnt_1 = [0, 1, 1, 2, 3, 5, 8, 13]
๊ฐ ๋์ด n๋ฒ์งธ ์์๋ฅผ ์ถ๋ ฅํ๋ฉด ๋๋ค
์ฝ๋ (pass)
T = int(input())
for tc in range(T):
N = int(input())
cnt_0 = [1, 0] # 0 ํธ์ถํ์ ๊ธฐ๋กํ๋ ๋ฆฌ์คํธ
cnt_1 = [0, 1] # 1 ํธ์ถํ์ ๊ธฐ๋กํ๋ ๋ฆฌ์คํธ
for i in range(2, N + 1):
cnt_0.append(cnt_0[i - 1] + cnt_0[i - 2]) # ์ด์ ๋ ๋จ๊ณ์ 0 ํธ์ถํ์๋ฅผ ๋ํจ
cnt_1.append(cnt_1[i - 1] + cnt_1[i - 2])
print("{} {}".format(cnt_0[N], cnt_1[N]))
์๊ฐ์ด๊ณผ ๋ ์ฝ๋ (fail)
def f(n):
global cnt_0, cnt_1
if n == 0: # n์ด 0์ด๋ฉด 0ํธ์ถํ์ 1 ์ฆ๊ฐ
cnt_0 += 1
return cnt_0, cnt_1
elif n == 1: # n์ด 1์ด๋ฉด 1ํธ์ถํ์ 1 ์ฆ๊ฐ
cnt_1 += 1
return cnt_0, cnt_1
else:
return f(n-1) + f(n-2)
T = int(input())
for tc in range(T):
N = int(input())
cnt_0, cnt_1 = 0, 0
f(N)
print("{} {}".format(cnt_0, cnt_1))
ํ์คํ๊ธฐ
์๊ฐ์ด๊ณผ ์ด์ฉ.. ๋งจ๋ ์๊ฐ์ด๊ณผ ๋จ๊ณ ๋์์ผ ์ฝ๋ ๋ค์ ์ง๋ ์ธ์..
'algorithm > baekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] 1260. DFS์ BFS / python ํ์ด์ฌ (0) | 2021.04.08 |
---|---|
[๋ฐฑ์ค] 1012. ์ ๊ธฐ๋ ๋ฐฐ์ถ / python ํ์ด์ฌ (0) | 2021.04.08 |
[๋ฐฑ์ค] 1074. Z / python ํ์ด์ฌ (0) | 2021.04.08 |
[๋ฐฑ์ค] 2630. ์์ข ์ด ๋ง๋ค๊ธฐ / python ํ์ด์ฌ (0) | 2021.04.08 |
[๋ฐฑ์ค] 2164. ์นด๋2 / python ํ์ด์ฌ (0) | 2021.04.08 |
๋๊ธ
๊ธ ๋ณด๊ดํจ
TAG
- ์๊ณ ๋ฆฌ์ฆ
- ๋ธ๋ฃจํธํฌ์ค
- 20056 ๋ง๋ฒ์ฌ ์์ด์ ํ์ด์ด๋ณผ
- git ๋ฏธ๋ฌ๋ง
- swea
- ํ๋ก๊ทธ๋๋จธ์ค
- 17406 ๋ฐฐ์ด๋๋ฆฌ๊ธฐ4
- 2579 ๊ณ๋จ์ค๋ฅด๊ธฐ
- 2018 ์นด์นด์ค ๊ณต์ฑ
- react
- 20057 ๋ง๋ฒ์ฌ ์์ด์ ํ ๋ค์ด๋
- ๊ธฐ์ง๊ตญ์ค์น
- Python
- merge ์๋ฌ
- dp
- 21609 ์์ด ์คํ๊ต
- merge์๋ฌ
- dfs
- ๋ฐฑ์ค
- ํ์ด์ฌ
- ์ผ์ฑ์ฝํ
- ์ผ์ฑ๊ธฐ์ถ
- ์์ด๋๋ง์๊ธฐ
- ๋ณด์์ผํ
- BFS
์ต๊ทผ์ ์ฌ๋ผ์จ ๊ธ
- Total
- Today
- Yesterday
์ต๊ทผ์ ๋ฌ๋ฆฐ ๋๊ธ