-
[๋ฐฑ์ค] 4811 ์์ฝ with PythonPS 2022. 3. 9. 01:02728x90๋ฐ์ํ
๐ BOJ 4811 ์์ฝ
๐ก ์กฐ๊ฑด
70์ธ ๋ฐ์ข ์ ํ ์๋ฒ์ง๋ ๋งค์ผ ๋งค์ผ ์ฝ ๋ฐ์์ ๋จน๋๋ค.
์๋ ์ ์์ด๋ ์ข ์ ํ ์๋ฒ์ง์๊ฒ ์ฝ์ด N๊ฐ ๋ด๊ธด ๋ณ์ ์ ๋ฌผ๋ก ์ฃผ์๋ค.๋ค์ ๋ ๋ถํฐ ์ข ์๋ ๋ณ์์ ์ฝ์ ํ๋ ๊บผ๋ธ๋ค.
(์ฝ์ ํ ์กฐ๊ฐ ์ ์ฒด ์ผ ์๋ ์๊ณ , ์ชผ๊ฐ ๋ฐ ์กฐ๊ฐ ์ผ ์๋ ์๋ค) ๋ฐ ์กฐ๊ฐ์ด๋ผ๋ฉด ๊ทธ ์ฝ์ ๋จน๊ณ ,
์๋๋ผ๋ฉด ๋ฐ์ ์ชผ๊ฐ์ ํ ์กฐ๊ฐ์ ๋จน๊ณ , ๋ค๋ฅธ ์กฐ๊ฐ์ ๋ค์ ๋ณ์ ๋ฃ๋๋ค.์ข ์๋ ์๋ ์๊ฒ ํ ์กฐ๊ฐ์ ๊บผ๋ธ ๋ ์๋ W๋ฅผ, ๋ฐ ์กฐ๊ฐ์ ๊บผ๋ธ ๋ ์๋ H ๋ณด๋ธ๋ค.
์๋ ๋ ํ ์๋ฒ์ง์๊ฒ ๋ฐ์ ๋ฌธ์๋ฅผ ์ข ์ด์ ๊ธฐ๋กํด ๋๋๋ค. ์ด 2N์ผ์ด ์ง๋๋ฉด ๊ธธ์ด๊ฐ 2N์ธ ๋ฌธ์์ด์ด ๋ง๋ค์ด์ง๊ฒ ๋๋ค.
์ด๋, ๊ฐ๋ฅํ ์๋ก ๋ค๋ฅธ ๋ฌธ์์ด์ ๊ฐ์๋ ์ด ๋ช ๊ฐ์ผ๊น?
์ ๋ ฅ์ ์ต๋ 1000๊ฐ์ ํ ์คํธ ์ผ์ด์ค๋ก ์ด๋ฃจ์ด์ ธ ์๋ค.
๊ฐ ํ ์คํธ ์ผ์ด์ค๋ ํ ์ค์ด๋ฉฐ, ๋ณ์ ๋ค์ด์๋ ์ฝ์ ๊ฐ์ N โค 30 ๊ฐ ์ฃผ์ด์ง๋ค.
์ ๋ ฅ์ ๋ง์ง๋ง ์ค์๋ 0์ด ํ๋ ์ฃผ์ด์ง๋ค.๋ค์ด๋๋ฏนํ๋ก๊ทธ๋๋ฐ ์ ํ์ ๋ฌธ์
๐ฅ ์์ค ์ฝ๋
from sys import stdin arr = [[0] * 31 for _ in range(31)] arr[0][1] = 1 for i in range(31): for j in range(i, 31): if i == 0: arr[i][j] = 1 else: if i == j: arr[i][j] = arr[i-1][j] else: arr[i][j] = arr[i-1][j] + arr[i][j-1] while 1: n = int(stdin.readline()) if n == 0: break print(arr[n][n])
๐ ์์ ๋ฐ ์คํ๊ฒฐ๊ณผ
์์
6 1 4 2 3 30 0
์คํ๊ฒฐ๊ณผ
132 1 14 2 5 3814986502092304
โจ๏ธ ๋ฌธ์ ํ์ด
์์ฝ์ ๋จน์ง ์์ผ๋ฉด ์ ๋๋ก ๋ฐ๊ฐ์ง๋ฆฌ๋ ์กด์ฌํ ์๋ ์๋ค.
์จ์ ํ ์์ฝ์ ๋จน์ผ๋ฉด ๋ฐ์ชฝ์ง๋ฆฌ ์์ฝ์ด ์๊ธด๋ค.
์ด ๊ฒฝ์ฐ, ๋ฐ์ชฝ์ง๋ฆฌ ์์ฝ์ ๋จน์ ์ ์๋ ๊ฒฝ์ฐ์ ์๊ฐ ํ๋ ๋ ๋์ด๋๋ค.h/w 0 1 2 3 4
0 0 1 1 1 1
1 1 2 3 4
2 2 5 9
3 5 14
4 14
๐พ ๋๋์
- ๋ค์ด๋๋ฏนํ๋ก๊ทธ๋๋ฐ์ ๋๋ฌด ๋ชปํ๋ค.
- ๋ฌธ์ ๋ฅผ ์ดํดํ๊ณ , ์ดํดํ ๋ด์ฉ์ ๋ฐํ์ผ๋ก ํ์ด๋ฅผ ์ ๋ํ๋ ๊ฒ์ด ์์ ๋์ง๋ฅผ ์๋๋ค.
- DP ๋ฌธ์ ๊ฐ๋ค๊ณ ์๊ฐ์ด ๋๋ฉด ์ฒ์ฒํ ๊ทธ๋ ค๊ฐ๋ฉด์ ์๊ฐ์ ํด๋ณด์.
๋ฐ์ํ'PS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] 10163 ์์ข ์ด with Python (0) 2022.03.09 [๋ฐฑ์ค] 9081 ๋จ์ด ๋ง์ถ๊ธฐ with Python (2) 2022.03.09 [๋ฐฑ์ค] 1822 ์ฐจ์งํฉ with Python (0) 2022.03.06 [๋ฐฑ์ค] 1788 ํผ๋ณด๋์น์์ ํ์ฅ with Python (0) 2022.03.06 [๋ฐฑ์ค] 1660 ์บกํด ์ด๋ค์ with Python (0) 2022.03.06