146.下降
16056 ワード
白駿
参考にする。 , 参考にする。
1. Python
参考にする。 , 参考にする。
import copy
import sys
input = sys.stdin.readline
n = int(input())
# 그래프 정보 입력
for i in range(n):
# 첫 입력
if i == 0:
dp_max = list(map(int, input().split()))
dp_max = copy.deepcopy(dp_max)
dp_min = copy.deepcopy(dp_max)
else:
new = list(map(int, input().split()))
a, b, c = dp_max[0], dp_max[1], dp_max[2] # 이전 dp저장
dp_max[0] = new[0] + max(a, b)
dp_max[1] = new[1] + max(a, b, c)
dp_max[2] = new[2] + max(b, c)
a, b, c = dp_min[0], dp_min[1], dp_min[2] # 이전 dp저장
dp_min[0] = new[0] + min(a, b)
dp_min[1] = new[1] + min(a, b, c)
dp_min[2] = new[2] + min(b, c)
print(max(dp_max), min(dp_min))
import sys
input = sys.stdin.readline
n = int(input())
max_dp = [0] * 3
min_dp = [0] * 3
max_tmp = [0] * 3
min_tmp = [0] * 3
for i in range(n):
a, b, c = map(int, input().split())
for j in range(3): #방향은 아래, 왼쪽 아래 대각, 오른쪽 아래 대각
if j == 0:
max_tmp[j] = a + max(max_dp[j], max_dp[j + 1])
min_tmp[j] = a + min(min_dp[j], min_dp[j + 1])
elif j == 1:
max_tmp[j] = b + max(max_dp[j - 1], max_dp[j], max_dp[j + 1])
min_tmp[j] = b + min(min_dp[j - 1], min_dp[j], min_dp[j + 1])
else:
max_tmp[j] = c + max(max_dp[j], max_dp[j - 1])
min_tmp[j] = c + min(min_dp[j], min_dp[j - 1])
for j in range(3):
max_dp[j] = max_tmp[j]
min_dp[j] = min_tmp[j]
print(max(max_dp), min(min_dp))
Reference
この問題について(146.下降), 我々は、より多くの情報をここで見つけました https://velog.io/@corone_hi/146.-내려가기テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol