Skip to content

Commit 01de938

Browse files
zaqquumMingguriguri
authored andcommitted
[BOJ]#2169. 로봇조종하기/골드2/힌트
https://www.acmicpc.net/problem/2169
1 parent a528824 commit 01de938

File tree

1 file changed

+41
-0
lines changed

1 file changed

+41
-0
lines changed
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
"""
2+
https://www.acmicpc.net/problem/1520
3+
"""
4+
5+
import sys
6+
input = sys.stdin.readline
7+
#0. 맵 (N,M) 칸 별 탐사 가치 설정
8+
N , M = map(int,input().split()) # y,x
9+
fields =list()
10+
for n in range(N) :
11+
fields.append(list(map(int, input().split())))
12+
13+
# print(fields)
14+
# 2. dp 테이블 초기화
15+
dp = [[0 for _ in range(M)] for k in range(N)]
16+
left2right = [[0 for _ in range(M)] for k in range(N)]
17+
right2left = [[0 for _ in range(M)] for k in range(N)]
18+
#3.탐색 가능 (1)left2 right <-/ (2) right2left <-
19+
20+
# n == 0 경우 : (1) left2right 경로만 존재(누적값)
21+
for m in range(M) :
22+
dp[0][m] = dp[0][m-1] + fields[0][m]
23+
# 2번쨰 행 부터 진행
24+
for n in range(1, N) :
25+
#m==0인 경우 초기화 : top-dowm의 경로만 존재
26+
left2right[n][0] = dp[n-1][0] + fields[n][0]
27+
right2left[n][M-1] = dp[n-1][M-1] + fields[n][M-1]
28+
# 1. 왼쪽 -> 오른쪽 방향으로 탐색 진행
29+
for m in range(1,M) :
30+
# (1)left2right , top-down 방향 탐색 누적 값 구하기
31+
left2right[n][m] = max(dp[n-1][m], left2right[n][m-1])+ fields[n][m]
32+
33+
#2. 오른쪽 -> 왼쪽 방향으로 탐색 진행
34+
for m in range(M-2 , -1 , -1) :
35+
# (2) right2left , top-down 방향 누적값 구하기
36+
right2left[n][m] = max(dp[n-1][m], right2left[n][m+1])+ fields[n][m]
37+
#3. 열 m 탐색 완료시 , 최종 dp 값 계산하기
38+
for m in range(M):
39+
dp[n][m] = max(left2right[n][m] , right2left[n][m])
40+
41+
print(dp[-1][-1])

0 commit comments

Comments
 (0)