관리 메뉴

NineTwo meet you

[백준/자바] 2096 내려가기 본문

프로그래밍 문제/백준

[백준/자바] 2096 내려가기

NineTwo 2021. 10. 5. 00:25
반응형

사진 클릭시 문제로 이동


설명

슬라이딩 윈도 문제다.

i인덱스 일 때 첫 번째 숫자라면 i-1의 첫 번째와 두 번째를 비교한다.

i인덱스 일 때 두 번째 숫자라면 i-1의 첫 번째와 두 번째와 세 번째를 비교한다.

i인덱스 일 때 세 번째 숫자라면 i-1의 두 번째와 세 번째를 비교한다.

 

코드

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class BOJ2096 {
static int score[][][];
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
score = new int[n][3][3];
for(int i = 0; i < n; i++) {
StringTokenizer st = new StringTokenizer(br.readLine());
for(int j = 0; j < 3; j++) {
score[i][j][0] = Integer.parseInt(st.nextToken());
}
}
for(int i = 0; i < 3; i++) {
score[0][i][2] = score[0][i][1] = score[0][i][0];
}
for(int i = 1; i < n; i++) {
score[i][0][1] = Math.min(score[i-1][0][1], score[i-1][1][1]) + score[i][0][0];
score[i][1][1] = Math.min(Math.min(score[i-1][0][1], score[i-1][1][1]), score[i-1][2][1]) + score[i][1][0];
score[i][2][1] = Math.min(score[i-1][1][1], score[i-1][2][1]) + score[i][2][0];
score[i][0][2] = Math.max(score[i-1][0][2], score[i-1][1][2]) + score[i][0][0];
score[i][1][2] = Math.max(Math.max(score[i-1][0][2], score[i-1][1][2]), score[i-1][2][2]) + score[i][1][0];
score[i][2][2] = Math.max(score[i-1][1][2], score[i-1][2][2]) + score[i][2][0];
}
int max = Integer.MIN_VALUE;
int min = Integer.MAX_VALUE;
for(int i = 0; i < 3; i++) {
max = Math.max(max, score[n-1][i][2]);
min = Math.min(min, score[n-1][i][1]);
}
System.out.println(max+" "+min);
}
}
view raw BOJ2096.java hosted with ❤ by GitHub
반응형
Comments