1. BOJ 11048 이동하기
https://www.acmicpc.net/problem/11048
코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
N, M = map(int, input().split())
arr = [list(map(int, input().split())) for _ in range(N)]
for i in range(N):
for j in range(M):
if i==0:
if j ==0:
arr[i][j] = arr[i][j]
else:
arr[i][j] += arr[i][j-1]
else:
if j==0:
arr[i][j] += arr[i-1][j]
else:
arr[i][j] += max(arr[i-1][j], arr[i-1][j-1], arr[i][j-1])
print(arr[-1][-1])
|
cs |
설명
[[ 1 2 3 4 ],
[ 0 0 0 5 ],
[ 9 8 7 6 ]]
위와 같이 입력이 들어온다. 마지막 칸에 도달할 때까지 얻을 수 있는 사탕의 최댓값을 구하면 된다.
해당 문제에서는 무조건 '대각선 아래, 오른쪽, 아래'로 이동해야 한다.
반대로 생각해보면 각 위치에서 '대각선 위, 왼쪽, 위' 의 값 중 max 값을 더해서 업데이트하면 된다는 것이다.
따라서, arr[0] 와 arr[i][0] 의 경우는 예외처리를 해주고, 나머지 그리드는 다음과 같이 업데이트 한다.
arr[i][j] += max(arr[i-1][j], arr[i-1][j-1], arr[i][j-1])
현재 값 왼쪽 대각선 위 위
'python, pyTorch > 코딩테스트-파이썬' 카테고리의 다른 글
BOJ 동전0 (0) | 2022.02.15 |
---|---|
BOJ 연속합, 동전1 (0) | 2022.02.13 |
프로그래머스 Lv.1 신고 결과 받기 (0) | 2022.02.13 |
BOJ 설탕배달, 정수삼각형 (0) | 2022.02.13 |
BOJ 가장긴증가하는부분수열, RGB거리 (0) | 2022.02.12 |