문제링크
https://www.acmicpc.net/problem/1932
1932번: 정수 삼각형
첫째 줄에 삼각형의 크기 n(1 ≤ n ≤ 500)이 주어지고, 둘째 줄부터 n+1번째 줄까지 정수 삼각형이 주어진다.
www.acmicpc.net
각 층의 요소마다 최대값을 계산하는방식으로 구현을 해보아야할것같다
다만 n은 최대 500까지 나오고 그렇게되면 한층당 계산해야할 요소개수가 500개로 늘어나기때문에 조금 걸리긴하지만
시간제한은 넉넉한 편인것같으니 한번 구현해보았다
원트에 성공하였다
RGB거리와 같은방식으로 풀었다
핵심은 도착지점마다 계속 최대값을 구하고 갱신시켜 나가는것이다
이렇게 하면 이미 계산한 경로를 다시 되돌아가 풀지않아도 된다(동적계획법)
# 정수 삼각형
import sys
input=sys.stdin.readline
N=int(input()) # 층
d=[[int(input())]]
for i in range(N-1):
d.append([]) # N개만큼의 층 구현
for i in range(1,N):
a=list(map(int,input().split()))
for j in range(len(a)):
if j==0:
d[i].append(a[j]+d[i-1][0])
elif j!=0 and j!=len(a)-1:
d[i].append(a[j]+max(d[i-1][j], d[i-1][j-1]))
else:
d[i].append(a[j]+d[i-1][-1])
print(max(d[-1]))
백준) 1로만들기 파이썬 (0) | 2022.07.20 |
---|---|
계단오르기-백준 파이썬 (0) | 2022.07.20 |
RGB 거리-파이썬 생각과정 (0) | 2022.07.17 |
순열, 조합 파이썬 알고리즘 총정리 (0) | 2022.07.05 |
백준 2580번 문제 - 스도쿠 (나의 파이썬 풀이과정) (0) | 2022.06.26 |