https://school.programmers.co.kr/learn/courses/30/lessons/42898
ํ๋ก๊ทธ๋๋จธ์ค
์ฝ๋ ์ค์ฌ์ ๊ฐ๋ฐ์ ์ฑ์ฉ. ์คํ ๊ธฐ๋ฐ์ ํฌ์ง์ ๋งค์นญ. ํ๋ก๊ทธ๋๋จธ์ค์ ๊ฐ๋ฐ์ ๋ง์ถคํ ํ๋กํ์ ๋ฑ๋กํ๊ณ , ๋์ ๊ธฐ์ ๊ถํฉ์ด ์ ๋ง๋ ๊ธฐ์ ๋ค์ ๋งค์นญ ๋ฐ์ผ์ธ์.
programmers.co.kr
0์ผ๋ก ์ด๊ธฐํ๋ dp ๋ฐฐ์ด์ ๋ง๋ค์ด์ฃผ๊ณ , ์ง์ด ์๋ ์๋ฆฌ๋ 1๋ก ๋ง๋ค์ด์ค๋ค.
๊ทธ ํ 1ํ -> 2ํ -> ... ์ผ๋ก ๋ฐ๋ณต๋ฌธ์ ๋๋ฉด์
(์ค๋ฅธ์ชฝ, ์๋์ชฝ์ผ๋ก๋ง ๊ฐ๊ธฐ ๋๋ฌธ์ ์์ผ๋ก ๊ฑด๋๊ฐ๋ฉด์ ๋ชจ๋ ๊ฒฝ์ฐ์ ์๋ฅผ ๊ณ์ฐํ ์ ์๋ค.)
[x-1][y], [x][y-1]์ ๋ฐฐ์ด์ ํฉํ ๊ฐ์ ๋ํด์ฃผ๋ฉด ๋๋ค.
# ํ๋ก๊ทธ๋๋จธ์ค 42898: ๋ฑ๊ตฃ๊ธธ
def solution(m, n, puddles):
dp = [[0] * (m+1) for _ in range(n+1)]
dp[1][1] = 1
for x in range(1, n+1):
for y in range(1, m+1):
if x == 1 and y == 1:
continue
if [y, x] in puddles:
continue
dp[x][y] = dp[x-1][y] + dp[x][y-1]
return (dp[-1][-1]) % 1000000007
์ด ๋ฌธ์ ํธ๋๋ผ ๊ณ ์์ ์ข ํ๋ค...
1. ์ฒ์์ ๋ฌธ์ ์ดํด ์๋ชปํด์ ์ต๋จ๊ฒฝ๋ก์ ๊ฐ์๊ฐ ์๋๋ผ ์ต๋จ๊ฒฝ๋ก์ ๊ธธ์ด์ธ ์ค ์๊ณ
๋ถ๋ช ๋ค ๋ง๋๋ฐ ์ ๋ชจ๋ ๋ต์ด ํ๋ฆฌ๊ฒ ๋์ค๋๊ฑฐ์ง ํ๊ณ ํ ์๊ฐ๋์ ์ฝ์งํ๋คใ ;;
2. ์ถ์ ์๊ฐ ๋ฌผ์ด ์ ๊ธด ์ง์ญ์ ์ขํ๋ฅผ ๋ฐ๋๋ก ์คฌ๋ค;;
3. bfs๋ก ํ๋ค๊ฐ ์๊พธ ์๊ฐ ์ด๊ณผ๊ฐ ์๋ค๋ฅ ๋ด๋คใ
