728x90
SMALL
문제
https://www.acmicpc.net/problem/1932
1932번: 정수 삼각형
첫째 줄에 삼각형의 크기 n(1 ≤ n ≤ 500)이 주어지고, 둘째 줄부터 n+1번째 줄까지 정수 삼각형이 주어진다.
www.acmicpc.net
풀이
예제의 동작은 다음과 같다.
위 예제를 보면, 첫번째 값인경우, 중간값일 경우, 가장 끝의 값일 경우 를 나눠서 생각해야함을 알 수 있다.
첫번째 값일 경우) 이전 행의 자신과 인덱스(0)가 같은 값을 그대로 더한다.
중간 값일 경우) 이전 행의 자신과 같은 인덱스와, 자신보다 하나 적은 인덱스를 자신과 더한 값을 계산한다. 이중 더 큰 값을 선택한다.
끝의 값을 경우) 이전행의 자신보다 하나 적은 인덱스 값을 그대로 더한다.
위에 맞춰 입력받은 이차원배열값을 업데이트하고, 마지막 행에서 가장 큰 값을 출력하면 된다!
import sys
n=int(sys.stdin.readline())
tr=[]
for i in range(n):
tr.append(list(map(int,sys.stdin.readline().strip().split(' '))))
tr.append([0]*n) #모두 0으로 초기화
for i in range(1,n):
for j in range(len(tr[i])):
if j==0: # 0열인경우 윗줄의 결과를 그대로 더함
tr[i][j]=tr[i-1][j]+tr[i][j]
elif j==len(tr[i])-1: # 가장 끝의 경우 윗줄의 마지막열 결과를 그대로 더함
tr[i][j]=tr[i-1][-1]+tr[i][j]
else: # 중간 값일 경우 윗줄의 대각선값 중 큰 값을 선택
tr[i][j]=max(tr[i][j]+tr[i-1][j-1],tr[i][j]+tr[i-1][j])
728x90
LIST
'코테공부 > python 백준' 카테고리의 다른 글
파이썬 백준 1003번 : 피보나치 함수 (0) | 2024.04.07 |
---|---|
파이썬 백준 12026번: BOJ 거리 (0) | 2024.04.07 |
파이썬 백준 11058번: 크리보드 (0) | 2024.04.07 |
파이썬 백준 1149번: RGB거리 (0) | 2024.04.07 |
파이썬 백준 1463번 : 1로 만들기 (0) | 2024.04.06 |