ํฐ์คํ ๋ฆฌ ๋ทฐ
728x90
๋ฐ์ํ
๋ฌธ์
๋ฌธ์ ํ์ด
N๊ฐ์ ์ฝ์ด ๋ด๊ธด ๋ณ์ด ์ฃผ์ด์ง ๋, ์ฒซ์งธ ๋ ์๋ ์ฝ์ ๊บผ๋ด์ ๋ฐ ์กฐ๊ฐ์ผ๋ก ๋๋ ํ ๋ฐ์ ๋จน๊ณ ๋ฐ์ ๋ค๋ฅธ ๋ณ์ ๋ฃ๋๋ค. ๊ทธ๋ค์ ๋ ์๋ ์ฝ์ ๊บผ๋ด์ ๋ฐ ์กฐ๊ฐ์ด๋ฉด ๋จน๊ณ , ๋ฐ ์กฐ๊ฐ์ด ์๋๋ผ๋ฉด ๋ฐ์ ์ชผ๊ฐ์ ๋จน์ ํ ๋จ์ ๊ฒ์ ๋ค๋ฅธ ๋ณ์ ๋ฃ๋๋ค. ํ ์กฐ๊ฐ์ ๊บผ๋ธ๋ ์๋ W, ๋ฐ ์กฐ๊ฐ์ ๊บผ๋ธ ๋ ์๋ H์ผ ๋ 2N์ผ ํ์ ์๋ก ๋ค๋ฅธ ๋ฌธ์์ด์ ๊ฐ์๋ฅผ ๋ฐํํ๋ ๋ฌธ์ ์ด๋ค. ์ด๋ DFS๋ฅผ ํตํด ๋ฐ ์กฐ๊ฐ์ด ๋จ์์๋ ๊ฒฝ์ฐ๋ฅผ ๋ฐ์ํ์ฌ ํธ์ถํ๋ฉด ์ฝ๊ฒ ํด๊ฒฐํ ์ ์๋ค.
์ฝ๋
from sys import stdin
def dfs(w, h):
if dp[w][h]:
return dp[w][h]
if w == 0:
return 1
dp[w][h] = dfs(w - 1, h + 1)
if h > 0:
dp[w][h] += dfs(w, h - 1)
return dp[w][h]
if __name__ == '__main__':
dp = [[0] * 31 for _ in range(31)]
while True:
n = int(stdin.readline())
if n == 0:
break
print(dfs(n, 0))
728x90
๋ฐ์ํ
'๐จโ๐ป ์ฝ๋ฉํ ์คํธ > ๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ฐฑ์ค: 14890 ๊ฒฝ์ฌ๋ก (0) | 2020.09.22 |
---|---|
๋ฐฑ์ค: 3190 ๋ฑ (0) | 2020.09.21 |
๋ฐฑ์ค: 17142 ์ฐ๊ตฌ์ 3 (0) | 2020.09.17 |
๋ฐฑ์ค: 17141 ์ฐ๊ตฌ์ 2 (0) | 2020.09.17 |
๋ฐฑ์ค: 3184 ์ (0) | 2020.09.15 |
๋๊ธ
๊ธ ๋ณด๊ดํจ
์ต๊ทผ์ ์ฌ๋ผ์จ ๊ธ
์ต๊ทผ์ ๋ฌ๋ฆฐ ๋๊ธ