-
[C][백준] 1932. 정수 삼각형 구현하기 | Dynamic ProgrammingAlgorithm/백준 2023. 3. 3. 14:45728x90
#include <stdio.h> #define MAX_NUM 505 int main(void) { int table[MAX_NUM][MAX_NUM] = {0}; int dp[MAX_NUM][MAX_NUM] = {0}; int num; scanf("%d", &num); // 입력 for (int i = 1; i <= num; i++) { for (int j = 0; j < i; j++) { scanf("%d", &table[i][j]); } } // dp 테이블 끝 요소 채우기 dp[1][0] = table[1][0]; for (int i = 2; i <= num; i++) { dp[i][0] = dp[i - 1][0] + table[i][0]; dp[i][i - 1] = dp[i - 1][i - 2] + table[i][i - 1]; } // dp for (int i = 3; i <= num; i++) { for (int j = 1; j < num; j++) { int left = dp[i - 1][j - 1]; int right = dp[i - 1][j]; if (left <= right) { dp[i][j] = table[i][j] + right; } else { dp[i][j] = table[i][j] + left; } } } // 맨 마지막 줄 중 가장 큰 수 int result = 0; for (int k = 0; k < num; k++) { if (result < dp[num][k]) result = dp[num][k]; } printf("%d", result); return 0; }
맨 위층에서 아래층까지의 합이 최대가 되는 경로를 구하는 문제이다.
이 문제는 DP로 풀어야한다. DP 문제를 다차원배열 단원에서 풀어야 한다니... ㄷㄷ
DP 테이블 끝 요소 채우는 것은 괜히 만든 것 같다.
728x90'Algorithm > 백준' 카테고리의 다른 글
[C][백준] ChatGPT로 백준 문제를 풀었다? - Python to C language migration, 9012번 괄호 (0) 2023.03.18 [C][백준] 5567. 결혼식 구현하기 | 깊이 제한 그래프 탐색 (0) 2023.03.06 [C][백준] 20055번 컨베이어 벨트 위의 로봇 풀이 : 원형 연결리스트, 삼성 SW 역량 테스트 기출 문제 (0) 2022.11.02 [C][백준] 1357번 뒤집힌 덧셈 풀이 : 문자열, 배열을 쓰지 않고, C 숫자 분리 (0) 2022.09.29 [C][백준] 2346번 풍선 터뜨리기 문제 풀이 : 원형 연결리스트를 사용하여 (0) 2022.09.07