algorithm'''problem solve
[백준] 1932 - 정수 삼각형 (DP)
JunHwa Park
2020. 10. 9. 00:32
https://www.acmicpc.net/problem/1932
1932번: 정수 삼각형
첫째 줄에 삼각형의 크기 n(1 ≤ n ≤ 500)이 주어지고, 둘째 줄부터 n+1번째 줄까지 정수 삼각형이 주어진다.
www.acmicpc.net
1
2
3
4
5
6
7
8
9
10
11
12
13
|
n = int(input())
arr = [list(map(int, input().split())) for _ in range(n)]
answer = [list() for _ in range(n)]
index = 0
for i in arr[n - 1]:
answer[0].append(i)
for a in arr[n - 2::-1]:
index += 1
for i in range(len(a)):
answer[index].append(a[i] + max(answer[index - 1][i], answer[index - 1][i + 1]))
print(answer[-1][0])
|
cs |
간단한 DP문제이다.
이 문제를 접근할 때는 삼각형의 아래쪽(숫자가 많은 쪽)에서부터 접근하는 것이 더 편하다고 생각한다. 뭐 반대로 해도 크게 다르지는 않겠지만..
아래쪽에서부터 위로 올라가며, 한 줄 아래의 숫자 중 어떤걸 선택해야 최댓값이 될지 선택하면 올라가는 방식이다.