๐ค๋ฌธ์ ํด๊ฒฐ
1. DP | silver1
2. ์ฃผ์ด์ง 2์ฐจ์ ๋ฐฐ์ด๋ณด๋ค ํ์นธ์ฉ ๋ ํฐ 0์ผ๋ก ์ฑ์์ง ๋ฐฐ์ด์ ๋ง๋ ๋ค.
(ํ์นธ์ฉ ๋ ๋ง์ ์ด์ ๋ ๊ฐ์ฅ ์์ค๊ณผ ๊ฐ์ฅ ์ผ์ชฝ์ค๋ ๋น๊ตํด์ฃผ๊ธฐ ์ํด์)
3. ํ์ฌ ์ง์ ์ ๊ฐ(maze)๊ณผ ๊ทธ ์ ์ด์ ์ ๊ฐ๋ค(์ผ์ชฝ, ์ผ์ชฝ์, ์)์ค ํฐ ๊ฐ(dp)์ ๋ํด์ (dp์) ๊ฐ์ ๊ณ์ ์์ ์ค๋ค.
๐จ ๋ค์ด๋๋ฏนํ๋ก๊ทธ๋๋ฐ ๋ฌธ์ . BFS๋ก๋ ๊ฐ๋จํ ํ ์ ์์ง๋ง ์๊ฐ์ด๊ณผ๊ฐ ๋๋ค.
๐ป์์ค ์ฝ๋
N, M = map(int, input().split())
maze = [list(map(int, input().split())) for _ in range(N)]
# ๊ฐ์ฅ ์์ค๊ณผ ๊ฐ์ฅ ์ผ์ชฝ์ค๋ ๋น๊ต๋ฅผ ํด์ค์ผ ํ๊ธฐ ๋๋ฌธ์ ํ์นธ์ฉ ๋ํด์ ๋ง๋ค์ด์ค๋ค.
dp = [[0] * (M + 1) for _ in range(N + 1)]
for i in range(1, N + 1):
for j in range(1, M + 1):
dp[i][j] = maze[i - 1][j - 1] + max(dp[i - 1][j], dp[i - 1][j - 1], dp[i][j - 1])
print(dp[-1][-1])
๐๋ฌธ์ ํ์ธ
์ถ์ฒ: BACKJOON ONLINE JUDGE
๋งํฌ: https://www.acmicpc.net/problem/11048
๋ฌธ์
์ค๊ท๋ N×M ํฌ๊ธฐ์ ๋ฏธ๋ก์ ๊ฐํ์๋ค. ๋ฏธ๋ก๋ 1×1ํฌ๊ธฐ์ ๋ฐฉ์ผ๋ก ๋๋์ด์ ธ ์๊ณ , ๊ฐ ๋ฐฉ์๋ ์ฌํ์ด ๋์ฌ์ ธ ์๋ค. ๋ฏธ๋ก์ ๊ฐ์ฅ ์ผ์ชฝ ์ ๋ฐฉ์ (1, 1)์ด๊ณ , ๊ฐ์ฅ ์ค๋ฅธ์ชฝ ์๋ซ ๋ฐฉ์ (N, M)์ด๋ค.
์ค๊ท๋ ํ์ฌ (1, 1)์ ์๊ณ , (N, M)์ผ๋ก ์ด๋ํ๋ ค๊ณ ํ๋ค. ์ค๊ท๊ฐ (r, c)์ ์์ผ๋ฉด, (r+1, c), (r, c+1), (r+1, c+1)๋ก ์ด๋ํ ์ ์๊ณ , ๊ฐ ๋ฐฉ์ ๋ฐฉ๋ฌธํ ๋๋ง๋ค ๋ฐฉ์ ๋์ฌ์ ธ์๋ ์ฌํ์ ๋ชจ๋ ๊ฐ์ ธ๊ฐ ์ ์๋ค. ๋, ๋ฏธ๋ก ๋ฐ์ผ๋ก ๋๊ฐ ์๋ ์๋ค.
์ค๊ท๊ฐ (N, M)์ผ๋ก ์ด๋ํ ๋, ๊ฐ์ ธ์ฌ ์ ์๋ ์ฌํ ๊ฐ์์ ์ต๋๊ฐ์ ๊ตฌํ์์ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์ ๋ฏธ๋ก์ ํฌ๊ธฐ N, M์ด ์ฃผ์ด์ง๋ค. (1 ≤ N, M ≤ 1,000)
๋์งธ ์ค๋ถํฐ N๊ฐ ์ค์๋ ์ด M๊ฐ์ ์ซ์๊ฐ ์ฃผ์ด์ง๋ฉฐ, r๋ฒ์งธ ์ค์ c๋ฒ์งธ ์๋ (r, c)์ ๋์ฌ์ ธ ์๋ ์ฌํ์ ๊ฐ์์ด๋ค. ์ฌํ์ ๊ฐ์๋ 0๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ๊ณ , 100๋ณด๋ค ์๊ฑฐ๋ ๊ฐ๋ค.
์ถ๋ ฅ
์ฒซ์งธ ์ค์ ์ค๊ท๊ฐ (N, M)์ผ๋ก ์ด๋ํ ๋, ๊ฐ์ ธ์ฌ ์ ์๋ ์ฌํ ๊ฐ์๋ฅผ ์ถ๋ ฅํ๋ค.
'Algorithm Problem > Python' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[python] SWEA - 1389. ์ผ๋น ๋ฒ ์ด์ปจ์ 6๋จ๊ณ ๋ฒ์น (0) | 2020.08.20 |
---|---|
[python] ๋ฐฑ์ค - 1074. Z (0) | 2020.08.19 |
[python] SWEA - 4261. ๋น ๋ฅธ ํด๋์ ํ ํคํจ๋ (0) | 2020.08.17 |
[python] SWEA - 1238. [S/W ๋ฌธ์ ํด๊ฒฐ ๊ธฐ๋ณธ] 10์ผ์ฐจ - Contact (0) | 2020.08.16 |
[python] SWEA - 1219. [S/W ๋ฌธ์ ํด๊ฒฐ ๊ธฐ๋ณธ] 4์ผ์ฐจ - ๊ธธ์ฐพ๊ธฐ (0) | 2020.08.15 |