ALGORITHM/BOJ
[백준] 2096 내려가기
0298
2021. 1. 19. 23:48
2096번: 내려가기
첫째 줄에 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 N개의 줄에는 숫자가 세 개씩 주어진다. 숫자는 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 중의 하나가 된다.
www.acmicpc.net
2021-01-19
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
|
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;
public class Main2096 {
public static int N, min[], max[];
public static void main(String[] args) throws Exception {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(bf.readLine().trim());
N = Integer.parseInt(st.nextToken());
min = new int[3]; // 최소값을 저장할 배열
max = new int[3]; // 최대값을 저장할 배열
st = new StringTokenizer(bf.readLine());
for (int i = 0; i < 3; i++) { // 맨 첫째줄로, max와 min 배열에 값을 먼저 세팅해놓는다.
min[i] = Integer.parseInt(st.nextToken());
max[i] = min[i];
}
for (int i = 1; i < N; i++) { // 두번째 줄부터 시작한다.
st = new StringTokenizer(bf.readLine()); // 값이 3개밖에 안되므로, 그냥 변수로 입력 받는다.
int a = Integer.parseInt(st.nextToken());
int b = Integer.parseInt(st.nextToken());
int c = Integer.parseInt(st.nextToken());
int tmp1 = max[0];
int tmp2 = max[1];
int tmp3 = max[2]; // 밑에 계산에서 값이 변하므로 미리 값을 tmp에 저장해놓는다.
max[0] = Math.max(max[0], max[1]) + a; // 첫번째 -> 첫번째와 두번째
max[1] = Math.max(tmp1, Math.max(max[1], max[2])) + b; //두번째 -> 첫번째와 두번째와 세번째
max[2] = Math.max(tmp2, tmp3) + c; // 세번째 -> 두번째와 세번째
//min도 max와 같은 방법으로 계산한다.
tmp1 = min[0];
tmp2 = min[1];
tmp3 = min[2];
min[0] = Math.min(min[0], min[1]) + a;
min[1] = Math.min(tmp1, Math.min(min[1], min[2])) + b;
min[2] = Math.min(tmp2, tmp3) + c;
}
Arrays.sort(max);
Arrays.sort(min);
System.out.println(max[2] + " " + min[0]);
}
}
|
cs |
#문제풀이
슬라이딩 윈도우 + dp 문제로 문제 풀이는 주석과 같다. 아래 블로그를 참조해서 공부하고 풀었다.
blog.naver.com/kks227/220795165570
투 포인터(Two Pointers Algorithm), 슬라이딩 윈도우(Sliding Window) (수정: 2019-09-09)
조금 성향이 비슷하다고 생각하는 기법 2개를 함께 쓰려 합니다.첫 번째로 소개해드릴 기법은 투 포인터(tw...
blog.naver.com