1932-s1 성공

This commit is contained in:
sm4640
2026-03-30 09:46:31 +09:00
parent 5d300435a5
commit 7f235e6836

View File

@@ -0,0 +1,39 @@
# 정수 삼각형
import sys
input = sys.stdin.readline
def solution():
n = int(input().rstrip())
triangle = [[] for _ in range(n)]
for i in range(n):
triangle[i] = list(map(int, input().rstrip().split()))
dp = [[0] * i for i in range(1, n+1)]
dp[0][0] = triangle[0][0]
for i in range(1, n):
for j in range(len(dp[i])):
for k in range(2):
if j-k >= len(dp[i-1]) or j-k < 0:
continue
dp[i][j] = max(dp[i][j], dp[i-1][j-k]+triangle[i][j])
print(max(dp[n-1]))
return
solution()
"""
걸린 시간: 15분
시간 복잡도: 전체 수에 대해서 진행하기 때문에 O(n^2)이다.
해설: 1149번(RGB로 집 칠하기) 문제랑 비슷하다. 현재 값을 선택할 때 여기까지 올 수 있는 경우의 수 중 최선의 플레이를 고르고, 마지막에 마지막 라인 중에서
최선을 선택하는 방식이다. 1149번에서 설명했지만, 그리디와는 다르게 현재 선택한 수가 최선일지는 모르는 것이기 때문이다.
"""