diff --git a/workbook_7319/silver/1932-s1.py b/workbook_7319/silver/1932-s1.py new file mode 100644 index 0000000..ebb6b32 --- /dev/null +++ b/workbook_7319/silver/1932-s1.py @@ -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번에서 설명했지만, 그리디와는 다르게 현재 선택한 수가 최선일지는 모르는 것이기 때문이다. +""" \ No newline at end of file