1932-s1 성공
This commit is contained in:
39
workbook_7319/silver/1932-s1.py
Normal file
39
workbook_7319/silver/1932-s1.py
Normal 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번에서 설명했지만, 그리디와는 다르게 현재 선택한 수가 최선일지는 모르는 것이기 때문이다.
|
||||
"""
|
||||
Reference in New Issue
Block a user