하루일문
[백준] 1932번 정수 삼각형(파이썬) 본문
문제
1932번: 정수 삼각형
첫째 줄에 삼각형의 크기 n(1 ≤ n ≤ 500)이 주어지고, 둘째 줄부터 n+1번째 줄까지 정수 삼각형이 주어진다.
www.acmicpc.net
코드
T = int(input())
li = []
for _ in range(T):
li.append(list(map(int, input().split())))
# 1행부터(0행의 수는 하나니까) 아래로 내려간다
for i in range(1, T):
# i행의 갯수만큼 for문을 돈다
for j in range(len(li[i])):
# j가 T-1 안에 있다면 a는 한 행 위를 저장한다. 아니라면 0을준다.(어차리 아래 max()로 인해 비교되고 탈락할 수)
if 0 <= j < len(li[i]) - 1:
a = li[i-1][j]
else:
a = 0
# j-1이 0보다 같거나 크다면 b에 한 행 위+한 열 앞의 수를 저장하고, 아니면 0을 준다.
if 0<= j-1 < len(li[i]) - 1:
b = li[i-1][j-1]
else:
b = 0
# 두 a, b중 큰 수를 해당 부분과 더하여 대체해준다.
li[i][j] = li[i][j] + max(a, b)
# 마지막 행에서 가장 큰 수를 구해준다.
print(max(li[T-1]))
해결
두 갈래로 찢어야하는데, a/b로 찢어구해서 그 중 큰 수를 더해주면서 내려가는 형식으로 구해주었다.
여기서 a, b가 범위를 넘지 않게 if문을 사용해주었다.
'algorithm > baekjoon' 카테고리의 다른 글
[백준] 2579번 계단 오르기(파이썬) (0) | 2023.04.07 |
---|---|
[백준] 14501번 퇴사(파이썬) (0) | 2023.04.06 |
[백준] 2748번 피보나치 수 2(파이썬) (0) | 2023.04.02 |
[백준] 13305번 주유소(파이썬) (0) | 2023.04.01 |
[백준] 와이버스 부릉부릉(파이썬) (0) | 2023.03.31 |