For Programmer
백준 1932번 파이썬 문제풀이(DP - 정수 삼각형) 본문
728x90
import sys
input = sys.stdin.readline
n = int(input())
input_array = [0]
for _ in range(n):
input_array.append(list(map(int, input().split())))
for i in range(2, n + 1):
for j in range(len(input_array[i])):
if j == 0: # 인덱스가 0일 때는 -1의 인덱스가 없기 때문에 비교할 필요 없다.
input_array[i][j] = input_array[i][j] + input_array[i - 1][j]
elif j == len(input_array[i]) - 1: # 인덱스가 마지막일 때도 비교할 필요 없다.
input_array[i][j] = input_array[i - 1][j - 1] + input_array[i][j]
else: # 그 외의 경우 그전 행의 왼쪽위 숫자와 오른쪽 위 숫자중 큰 값을 들고와야 하기 때문에 max값으로 비교
input_array[i][j] = max(input_array[i - 1][j] + input_array[i][j],
input_array[i - 1][j - 1] + input_array[i][j])
print(max(input_array[n])) # 마지막 행 중 가장 큰 값
-> 그림 그려보면 쉽게 풀 수 있는 간단한 DP문제이기 때문에 자세한 설명은 생략하고 간단한 설명은 코드 옆 주석으로 적어 놨다.
728x90
'코팅테스트 > 백준 문제 모음' 카테고리의 다른 글
백준 11054번 파이썬 문제풀이(DP - 가장 긴 바이토닉 부분 수열) (0) | 2021.11.09 |
---|---|
백준 11055번 파이썬 문제풀이(DP - 가장 큰 증가 부분 수열) (1) | 2021.11.08 |
백준 2156번 파이썬 문제풀이(DP - 포도주 시식) - 자세한 설명 (0) | 2021.11.07 |
백준 11057번 파이썬 문제풀이(DP - 오름막 수) (0) | 2021.11.07 |
백준 1309번 파이썬 문제풀이(DP - 동물원) (0) | 2021.11.06 |
Comments