ํฐ์คํ ๋ฆฌ ๋ทฐ
๋ฌธ์
4811๋ฒ: ์์ฝ
์ ๋ ฅ์ ์ต๋ 1000๊ฐ์ ํ ์คํธ ์ผ์ด์ค๋ก ์ด๋ฃจ์ด์ ธ ์๋ค. ๊ฐ ํ ์คํธ ์ผ์ด์ค๋ ํ ์ค์ด๋ฉฐ, ๋ณ์ ๋ค์ด์๋ ์ฝ์ ๊ฐ์ N โค 30 ๊ฐ ์ฃผ์ด์ง๋ค. ์ ๋ ฅ์ ๋ง์ง๋ง ์ค์๋ 0์ด ํ๋ ์ฃผ์ด์ง๋ค.
www.acmicpc.net
๋ฌธ์ ํ์ด
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))
'๐จโ๐ป ์ฝ๋ฉํ ์คํธ > ๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ฐฑ์ค: 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 |