๐ Problem Solving/Programmers
์ฝ๋ฉํ ์คํธ ์ฐ์ต - ๋ฑ๊ตฃ๊ธธ
๊ณ์๋๋ ํญ์ฐ๋ก ์ผ๋ถ ์ง์ญ์ด ๋ฌผ์ ์ ๊ฒผ์ต๋๋ค. ๋ฌผ์ ์ ๊ธฐ์ง ์์ ์ง์ญ์ ํตํด ํ๊ต๋ฅผ ๊ฐ๋ ค๊ณ ํฉ๋๋ค. ์ง์์ ํ๊ต๊น์ง ๊ฐ๋ ๊ธธ์ m x n ํฌ๊ธฐ์ ๊ฒฉ์๋ชจ์์ผ๋ก ๋ํ๋ผ ์ ์์ต๋๋ค. ์๋ ๊ทธ๋ฆผ์ m =
programmers.co.kr
import sys
input = sys.stdin.readline
m, n = map(int, input().split())
puddles = [list(map(int, input().split())) for _ in range(int(input()))]
def solution(m, n, puddles):
d = [[0] * (m + 1) for _ in range(n + 1)]
d[1][1] = 1
for i in range(1, n + 1):
for j in range(1, m + 1):
if i == 1 and j == 1:
continue
if [j, i] in puddles:
continue
d[i][j] = d[i - 1][j] + d[i][j - 1]
return d[-1][-1] % 1000000007
print(solution(m, n, puddles))
ํด์ค
dp๋ก ํด๊ฒฐํ ์ ์๋ ๋ฌธ์ ๋ค. ์ด ๋ฌธ์ ์์ ์ฌ์ฉํ๋ ์ขํ๋ ์ฐ๋ฆฌ๊ฐ ๊ธฐ์กด์ ์ฌ์ฉํ๋ ์ขํ์๋ ๋ฐ๋๋ผ๋ ๊ฑธ ์๊ฐํด์ผ ํ๋ค.
d ๋ฆฌ์คํธ์ ๊ธธ์ด๋ฅผ m+1 by n+1๋ก, ๋ชจ๋ ๊ฐ์ 0์ผ๋ก ์ด๊ธฐํํ๊ณ , (1, 1)์ 1๋ก ์ด๊ธฐํ๋ฅผ ํด์ค๋ค.
ํ์ฌ ์ขํ์์ ์์ ์ผ์ชฝ์ ๊ฒฝ์ฐ์ ์๋ฅผ ํฉํ ๊ฐ์ด ํ์ฌ ์ขํ๊น์ง ์ค๋ ๊ฒฝ์ฐ์ ์๊ฐ ๋๋ค.
์ขํ๊ฐ ๋ฐ๋์ด๊ธฐ ๋๋ฌธ์ [j, i]๊ฐ ์ฐ๋ฌผ์ด ์๋ ์ขํ๋ผ๋ฉด ๊ทธ๋๋ก 0์ผ๋ก ๋๋๋ค.
'๐ Problem Solving > Programmers' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋จธ์ค-Lv2] ๊ฑฐ๋ฆฌ๋๊ธฐ ํ์ธํ๊ธฐ / Python (0) | 2021.07.26 |
---|---|
[ํ๋ก๊ทธ๋๋จธ์ค-Lv1] ์ซ์ ๋ฌธ์์ด๊ณผ ์๋จ์ด / Python (0) | 2021.07.23 |
[ํ๋ก๊ทธ๋๋จธ์ค-Lv3] ์ด์ค์ฐ์ ์์ํ / Python (0) | 2021.06.18 |
[ํ๋ก๊ทธ๋๋จธ์ค-Lv3] ๊ฐ์ฅ ๋จผ ๋ ธ๋ / Python (0) | 2021.06.18 |
[ํ๋ก๊ทธ๋๋จธ์ค-Lv3] ๋คํธ์ํฌ / Python (0) | 2021.06.17 |