Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- 백준 10819
- Coroutine Flow
- java
- 안드로이드 hilt
- 이진 탐색
- 자료구조
- 1806 투포인터
- 6588 파이썬
- Android Room
- 10819 파이썬
- 백준 1644
- 5582 파이썬
- 2096 파이썬
- 5582 DP
- 1806 백준
- 1753 파이썬
- 투포인터 알고리즘
- android hilt
- Jetpack Room
- 코루틴 플로우
- flow buffering
- 1753 다익스트라
- git local remote
- 1806 파이썬
- 백준 5582
- 1003 파이썬
- 자바
- 백준 2096
- 1644 파이썬
- Android mvp
Archives
- Today
- Total
Gemstone's Devlog
[백준] 1932번: 정수 삼각형 (다이나믹 프로그래밍) 본문
이 문제 역시 다이나믹 프로그래밍으로 접근해야하는 문제이다.
본인은 bottom-up 방식으로 문제를 해결하였다.
어떤 층을 기준으로 왼쪽 아래 삼각형에서의 합이 최대가 되는 경로의 수의 합과 오른쪽 아래 삼각형에서의 합이 최대가 되는 경로의 수의 합을 비교해서 더 큰 값을 채택하는 방식으로 차근차근 올라간다.
메모제이션 기법으로 triangle 리스트에 답을 갱신하고 원하는 값을 구해낸다.
문제 풀이
import sys
input = sys.stdin.readline
n = int(input())
triangle = [list(map(int, input().split())) for _ in range(n)]
triangle.sort(key=lambda x: len(x), reverse=True)
for i in range(1, n):
for j in range(n-i):
triangle[i][j] += max(triangle[i-1][j], triangle[i-1][j+1])
print(triangle[-1][0])
'Data Structure & Algorithms' 카테고리의 다른 글
[백준] 14889번: 스타트와 링크 (백트래킹) (0) | 2022.03.13 |
---|---|
[Codeforces] 1285B: Just Eat It! (0) | 2022.03.10 |
[이것이 코딩테스트다] 효율적인 화폐 구성 (0) | 2022.03.01 |
[백준] 1463번: 1로 만들기 (다이나믹 프로그래밍) (0) | 2022.02.27 |
[이것이 코딩테스트다] 떡볶이 떡 만들기 (0) | 2022.02.26 |