[Algorithm] 백준_1932 정수 삼각형

lnnae·2020년 4월 23일
0

Algorithm

목록 보기
11/40

문제

크기가 N인 삼각형이 주어지고, 맨 위부터 아래에 있는 수 중에 하나를 선택해 내려올 때, 선택된 수들의 합이 최대인 경우의 값을 리턴하면 되는 문제이다.

풀이

한 노드를 기준으로 그 전의 행의 대각선(왼쪽, 오른쪽) 값을 더해서 최대가 되는 값을 현재 노드에 넣어줬습니다.
그리고 최대가 되는 노드의 값을 출력

소스 코드


import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class BOJ_1932 {
    static int[][] triangle;
    static int N;

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        N = Integer.parseInt(br.readLine()); // 삼각형 길이
        triangle = new int[N+1][N+1]; //삼각형 각 노드
        int max = 0;

        for (int i = 1; i <= N; i++) {
            StringTokenizer st = new StringTokenizer(br.readLine());
            for (int j = 1; j <= i; j++) {
                triangle[i][j] = Integer.parseInt(st.nextToken());

                triangle[i][j] = Math.max(triangle[i][j] + triangle[i-1][j], triangle[i][j] + triangle[i-1][j-1]);
                max = Math.max(triangle[i][j], max);
            }
        }
        System.out.println(max);
    }
}
profile
이내임니당 :>

0개의 댓글