๐ญ ๋ฌธ์ ์ดํด
๊ฒฉ์๋ฅผ ์ค๋ฅธ์ชฝ๊ณผ ์๋์ชฝ์ผ๋ก ์ด๋ํ๋ฉฐ ์ต๋จ ๊ฒฝ๋ก์ ์๋ฅผ ์ธก์ ํ๋ ๋ฌธ์ ์ด๋ค.
DP๋ก ํ ์ ์๊ณ , ๋ฌผ์ด ์๋ ๋ถ๋ถ์ ์ด๋ป๊ฒ ์ฒดํฌํ๋๋๊ฐ ํฌ์ธํธ์ธ ๋ฌธ์ ์ด๋ค.
๊ตฌํ ์ธ์ด: Python
def solution(m, n, puddles):
maps = [[0]*(m+1) for _ in range(n+1)]
dp = [[0]*(m+1) for _ in range(n+1)]
# ๋ฌผ ์ฒดํฌ
for pud in puddles:
maps[pud[1]][pud[0]] = -1
dp[1][0] = 1 # ์์์ง์ ์ 1
for i in range(1, n+1):
for j in range(1, m+1):
if maps[i][j] == -1:
dp[i][j] = 0
else:
dp[i][j] = (dp[i-1][j] + dp[i][j-1]) % 1000000007
return dp[n][m]
maps๋ ํ์ฌ ์ง๋์ ์ํ๋ฅผ ๋ํ๋ด๋ ๋ฐฐ์ด๋ก์, ๋ฌผ์ด ์๋ ์์น๋ผ๋ฉด ๊ทธ ๊ณณ์ -1๋ก ๊ธฐ๋กํด๋๋ค.
dp๋ ์ด๋ ๊ฒฝ๋ก๋ฅผ ๊ธฐ๋กํ๋ ๋ฐฐ์ด๋ก์, ๋ฌผ์ด ์๋ ์์น๋ผ๋ฉด ๊ทธ ๊ณณ์ 0์ด ๋๋ค. (์ด๋ํ ์ ์๋ค๋ ๋ป)
0 | 0 | 0 | 0 | 0 |
0 | 1 | |||
0 | 0 | |||
0 |
์์ ์ ์ฃผ์ด์ง ๊ฒฝ๋ก์ ์ํ์ด๋ค.
0ํ๊ณผ 0์ด์ ์ด๋ํ ์ ์๋ ๊ณต๊ฐ์ผ๋ก์ 0์ผ๋ก ์ฑ์์ง๊ฒ ๋๊ณ , ๋ฌผ๋ก ์ฑ์์ง ๊ณต๊ฐ ๋ํ 0์ด ๋๋ค.
0 | 0 | 0 | 0 | 0 |
0 | 1 | 1 | 1 | 1 |
0 | 1 | 0 | 1 | 2 |
0 | 1 | 1 | 2 | 4 |
(1, 1) ์์น๋ถํฐ ์ฃผ์ด์ง ๊ท๋ฉ์์ ๋ฐ๋ผ ์ฑ์๋๊ฐ๋ฉด ์ต์ข ๋ชฉ์ ์ง์ธ (n, m)์ ์ต๋จ๊ฒฝ๋ก์ ์๋ฅผ ์ฐพ์ ์ ์๊ฒ ๋๋ค.
'Problem_Solving' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋จธ์ค] ๊ฐ์ฅ ํฐ ์ / ์ ๋ ฌ (0) | 2021.03.11 |
---|---|
[ํ๋ก๊ทธ๋๋จธ์ค] ๋๋์ง / ๋์ ๊ณํ๋ฒ(Dynamic-Programming) (0) | 2021.03.11 |
[BOJ] ๋ฐฑ์ค 1535 ์๋ / ๋์ ๊ณํ๋ฒ(Dynamic-Programming) (0) | 2021.03.11 |
[BOJ] ๋ฐฑ์ค 2512 ์์ฐ / ์ด๋ถํ์ (0) | 2021.02.11 |
[BOJ] ๋ฐฑ์ค 1764 ๋ฃ๋ณด์ก / ์ด๋ถํ์ (0) | 2021.02.11 |