https://www.acmicpc.net/problem/1932
1932번: 정수 삼각형
첫째 줄에 삼각형의 크기 n(1 ≤ n ≤ 500)이 주어지고, 둘째 줄부터 n+1번째 줄까지 정수 삼각형이 주어진다.
www.acmicpc.net
import java.io.*;
import java.util.*;
public class Main {
public static int[][] memo;
public static int[][] tri;
public static void main(String[] args) throws IOException{
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringTokenizer st;
st = new StringTokenizer(br.readLine());
int n = Integer.parseInt(st.nextToken());
tri = new int[n][n];
memo = new int[n][n];
int num = 1;
for(int i=0; i<n; i++) {
Arrays.fill(tri[i],-1);
Arrays.fill(memo[i],-1);
st = new StringTokenizer(br.readLine());
for(int j=0; j<num; j++) {
tri[i][j] = Integer.parseInt(st.nextToken());
}
num++;
}
memo[0][0] = tri[0][0];
for(int i=1; i<n; i++) {
for(int j = 0; j<=i; j++) {
if(j==0) {
memo[i][j] = tri[i][j] + memo[i-1][0];
}
else if(j==i) {
memo[i][j] = tri[i][j] + memo[i-1][i-1];
}
else {
memo[i][j] = tri[i][j] + Math.max(memo[i-1][j],memo[i-1][j-1]);
}
}
}
int max = -1;
for(int i=0; i<n; i++) {
if(max<memo[n-1][i]) {
max = memo[n-1][i];
}
}
bw.write(max+"");
bw.close();
}
}
'백준' 카테고리의 다른 글
백준 동적계획법 - 1463번 : 1로 만들기 (0) | 2022.02.27 |
---|---|
백준 동적계획법 - 2579번 : 계단 오르기 (0) | 2022.02.17 |
백준 동적계획법 - 1149번 : RGB 거리 (1) | 2022.02.17 |
백준 동적계획법 - 9461번 : 파도반 수열 (0) | 2022.02.16 |
백준 동적계획법 - 1904번 : 01타일 (0) | 2022.02.16 |