백준 1932 정수 삼각

2022. 12. 16. 17:54코딩 공부 연습

반응형

백준 1932 정수 삼각형


오늘은 dp 문제 정수 삼각형을 풀었다.
이전 최댓값들을 가지고 있다가 업데이트 해주기만 하면 되고,

맨 마지막 줄에서 가장 큰 값을 찾는걸 저번에 이용한 Collections.max를 이용해 보았다. 이를 위해 그냥 배열로 만든걸 list로 변경해주는게 필요 했는데, 다음번에 짤땐 시작부터 리스트로 할 수 있으면 좋을 것 같다.

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Scanner;
import java.util.StringTokenizer;

public class Boj_1932 {

    public static void main(String[] args) {
        int n;
        int table[][] = new int[502][502];
        int result[][] = new int[502][502];
        Scanner scanner = new Scanner(System.in);
        n = Integer.parseInt(scanner.nextLine());

        for (int i = 1; i <= n; i++) {
            StringTokenizer st = new StringTokenizer(scanner.nextLine());
            int j = 1;
            while (st.hasMoreTokens()) {
                table[i][j] = Integer.parseInt(st.nextToken());
                j++;
            }
        }
        result[1][1] = table[1][1];
        result[2][1] = result[1][1] + table[2][1];
        result[2][2] = result[1][1] + table[2][2];
        for (int i = 3; i <= n; i++) {
            result[i][1] = result[i-1][1] + table[i][1];
            for (int j = 2; j < i; j++) {
                result[i][j] =Math.max(result[i-1][j-1], result[i-1][j]) + table[i][j];
            }
            result[i][i] = result[i-1][i-1] + table[i][i];
        }
        List<Integer> hoobo = new ArrayList<>();
        for (int i = 1; i <= n; i++) {
            hoobo.add(result[n][i]);
        }
        System.out.println(Collections.max(hoobo));
    }
}

'코딩 공부 연습' 카테고리의 다른 글

백준 15723 n단 논법  (0) 2022.12.21
백준 13265 색칠하기  (0) 2022.12.20
백준 11726 2xn 타일링  (1) 2022.12.14
백준 6593 상범 빌딩  (0) 2022.12.10
백준 2468 - 안전 영역  (0) 2022.12.08