
문제를 살펴보면 이번에는 이전 문제에서 삼각형으로 바뀐 조건이다
단계별로 풀어보기에서 앞선 문제들을 풀어왔다면 어렵지 않게 해결가능하다
하나의 리스트를 만들어 삼각형의 값들을 저장해주고, 부분합을 이용하여 마지막 줄에 합을 저장하면 된다
for문을 두개 만들어 바깥쪽 for문은 행을 가리키도록, 안쪽 for문은 열을 가리키도록 변수를 설정한다
이후에 첫번째 열이라면 대각선 왼쪽으로 이동할 index가 없기 때문에 오른쪽 index의 값과 더해준다
마지막 열이라면 반대로 대각선 오른쪽으로 이동할 index가 없기 때문에 왼쪽 index의 값과 더해주면 된다
그리고 그 중앙에 위치한 열들은 두 대각선의 index의 값 중에서 더 큰 값을 더해 값을 저장해주면 된다
조금 헷갈릴수는 있지만 그림을 그려가며 이해하다보면 더 쉽게 할 수 있다
그리고 마지막 행에서 가장 큰 값을 출력해주면 코드는 완성이다
N = int(input())
triangle = []
for _ in range(N):
triangle.append(list(map(int, input().split())))
for i in range(1, N):
for j in range(len(triangle[i])):
if j == 0:
triangle[i][j] += triangle[i-1][j]
elif j == len(triangle[i]) - 1:
triangle[i][j] += triangle[i-1][j-1]
else:
triangle[i][j] += max(triangle[i-1][j-1], triangle[i-1][j])
print(max(triangle[N-1]))


'Baekjoon' 카테고리의 다른 글
| [Baekjoon]백준 1463 1로 만들기(실버 3) - Python (0) | 2025.01.07 |
|---|---|
| [Baekjoon]백준 2579 계단 오르기(실버 3) - Python (0) | 2025.01.06 |
| [Baekjoon]백준 1149 RBG거리(실버 1) - Python (1) | 2025.01.04 |
| [Baekjoon]백준 1912 연속합(실버 2) - Python # 카데인 알고리즘 (1) | 2025.01.03 |
| [Baekjoon]백준 9461 파도반 수열(실버 3) - Python (1) | 2025.01.03 |