SSONG Cloud
[백준] 1932 정수 삼각형 본문
반응형
문제 출처: www.acmicpc.net/problem/1932
1932번: 정수 삼각형
첫째 줄에 삼각형의 크기 n(1 ≤ n ≤ 500)이 주어지고, 둘째 줄부터 n+1번째 줄까지 정수 삼각형이 주어진다.
www.acmicpc.net
: 정수 삼각형의 맨 위에서 아래로 내려오면수 선택된 수의 합을 최대로 만들어야 한다.
: 먼저 맨 위의 값을 미리 저장해놓고 아래에서 위를 바라보며 왼쪽과 오른쪽 중 큰 수를 더해주면 밑으로 내려가면된다.
: 그러면 마지막 줄에 최종 값들이 저장되고 그 중에서 가장 큰 값이 답이 된다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;
public class Main {
static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
static StringBuilder sb = new StringBuilder();
static StringTokenizer st;
public static void main(String[] args) throws NumberFormatException, IOException {
int N = Integer.parseInt(br.readLine());
int[][] map = new int[N][N];
for(int i = 0; i < N; i++)
Arrays.fill(map[i], -1);
for(int i = 0; i < N; i++) {
String[] tmp = br.readLine().split(" ");
for(int j = 0, size = tmp.length; j < size; j++) {
map[i][j] = Integer.parseInt(tmp[j]);
}
}
// for(int[] sub : map){
// System.out.println(Arrays.toString(sub));
// }
for(int i = 0; i < N; i++) {
for(int j = 0; j < N; j++) {
if(i == 0 && j == 0 ) continue;
int max = Integer.MIN_VALUE;
if(map[i][j] != -1) {
if(i-1 >= 0 && j-1 >= 0 && map[i-1][j-1] > max) max = map[i-1][j-1];
if(i-1 >= 0 && map[i-1][j] > max) max = map[i-1][j];
map[i][j] += max;
}
}
}
// for(int[] sub : map){
// System.out.println(Arrays.toString(sub));
// }
int res = Integer.MIN_VALUE;
for(int i = 0; i < N; i++)
res = Math.max(res, map[N-1][i]);
System.out.println(res);
}
}
반응형
'Algorithm > 백준' 카테고리의 다른 글
[백준] 11722 가장 긴 감소하는 부분 수열 (0) | 2021.03.25 |
---|---|
[백준] 11404 플로이드 (0) | 2021.03.25 |
[백준] 2156 포도주 시식 (0) | 2021.03.24 |
[백준] 11727 2xn 타일링 2 (0) | 2021.03.24 |
[백준] 1600 말이 되고픈 원숭이 (0) | 2021.03.24 |
Comments