ํฐ์คํ ๋ฆฌ ๋ทฐ
๋ฌธ์
๋ฌธ์ ํ์ด
N X N ๊ฒ์ํ์ด ์ฃผ์ด์ง ๋, ํ์ฌ ๊ฒฝ๋ก์์ (0, 1), (1, 0)์ผ๋ก๋ง ์ด๋ํ ์ ์๋ค. ๊ฒ์ํ์ ์ฃผ์ด์ง ์ซ์๋งํผ ์ ํํ์ฌ ์ด๋ํ๋ ๊ท์น์ด ์ ์ฉ๋ ๋, (N, N)์ ๋๋ฌํ ์ ์๋ ๊ฒฝ์ฐ์ ์๋ฅผ ๋ฐํํ๋ ๋ฌธ์ ์ด๋ค. ์ด ๋ฌธ์ ๋ ๋จ์ํ ๋ณด๋ฉด DFS๋, BFS๋ก ํ๋ฉด ๋๊ฒ ์ง๋ผ๊ณ ์๊ฐ๋์ง๋ง N์ด ์ต๋ 100๊น์ง ์ปค์ง๋ฏ๋ก ์๊ฐ ์ด๊ณผ๊ฐ ๋ฐ์ํ๊ฒ ๋๋ค. ๋ฐ๋ผ์ ๋ฌธ์ ๋ถ๋ฅ์ ๊ฐ์ด DP๋ก ํ์ด์ผ ํ๋ค.
ํ์ฌ ์์น์ ์ ํํ ์ ์๋ ๊ฑฐ๋ฆฌ๋ฅผ x, y์ถ์ ๊ฐ๊ฐ ๋ํ์ฌ, N ๋ณด๋ค ์๋ค๋ฉด ๋ฐฉ๋ฌธํ ์ ์๋ ๊ฒฝ๋ก์ด๋ค. ์ด๋ฐ์์ผ๋ก ํ์ฌ ์์น์ ์ ํํ ์ ์๋ ๊ฑฐ๋ฆฌ๊ฐ 0 (๊ฐ์ฅ ์ค๋ฅธ์ชฝ ์๋ ์นธ) ์ผ ๋๊น์ง ํ์ํ๋ฉฐ, ๊ฐ๋ฅํ ๊ฒฝ์ฐ์ ์๋ฅผ ์ค์ฒฉํ๋ค.
์ฝ๋
from sys import stdin
if __name__ == "__main__":
n = int(stdin.readline())
graph = [list(map(int, stdin.readline().split())) for _ in range(n)]
visited = [[0] * n for _ in range(n)]
visited[0][0] = 1
for x in range(n):
for y in range(n):
jump = graph[x][y]
if not jump:
break
if x + jump < n:
visited[x + jump][y] += visited[x][y]
if y + jump < n:
visited[x][y + jump] += visited[x][y]
print(visited[-1][-1])
'๐จโ๐ป ์ฝ๋ฉํ ์คํธ > ๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ฐฑ์ค: 2294 ๋์ 2 (0) | 2020.08.26 |
---|---|
๋ฐฑ์ค: 2293 ๋์ 1 (0) | 2020.08.26 |
๋ฐฑ์ค: 11048 ์ด๋ํ๊ธฐ (0) | 2020.08.25 |
๋ฐฑ์ค: 14503 ๋ก๋ด ์ฒญ์๊ธฐ (0) | 2020.08.24 |
๋ฐฑ์ค: 16954 ์์ง์ด๋ ๋ฏธ๋ก ํ์ถ (0) | 2020.08.24 |