DP, 슬라이딩 윈도우 처음 풀기
그래서 블로그와 함께 품,,, ㅎ
수시간의 삽질끝에 풀었다.. ㅜ
https://www.acmicpc.net/problem/2096
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.Collections;
import java.util.Deque;
import java.util.LinkedList;
import java.util.StringTokenizer;
public class BJ_2096 {
public static void main(String[] args) throws NumberFormatException, IOException {
BufferedReader br = new BufferedReader (new InputStreamReader (System.in));
Deque deque = new LinkedList<>();
int N = Integer.parseInt(br.readLine());
int a[][] = new int [N][3];
int max[][] = new int [N][3];
int min[][] = new int [N][3];
StringTokenizer st ;
for(int i=0; i<N; i++) {
st = new StringTokenizer(br.readLine());
for(int j=0; j<3; j++) {
max[i][j] = Integer.parseInt(st.nextToken());
min[i][j] = max[i][j];
}
}
for(int i=1; i<N; i++) {
max[i][0] +=Math.max(max[i-1][0], max[i-1][1]);
max[i][1] +=Math.max(Math.max(max[i-1][0], max[i-1][1]), max[i-1][2]);
max[i][2] +=Math.max(max[i-1][1], max[i-1][2]);
min[i][0] +=Math.min(min[i-1][0], min[i-1][1]);
min[i][1] +=Math.min(Math.min(min[i-1][0], min[i-1][1]), min[i-1][2]);
min[i][2] +=Math.min(min[i-1][1], min[i-1][2]);
}
// System.out.println(min[N-1][0]);
Integer[] max1 = {max[N-1][0], max[N-1][1], max[N-1][2]};
int[] min1 = {min[N-1][0], min[N-1][1], min[N-1][2]};
// System.out.println(min1[0]);
Arrays.sort(max1, Collections.reverseOrder());
Arrays.sort(min1);
// System.out.println(min1[0]);
// for(int i=0; i<3; i++) {
// System.out.println(max1[i]+" "+min1[i]);
//
// }
System.out.print(max1[0]+" "+min1[0]);
// System.out.println(max[N-1][0]);
// System.out.println(max[N-1][1]);
// System.out.println(max[N-1][2]);
//
// System.out.println(min[N-1][0]);
// System.out.println(min[N-1][1]);
// System.out.println(min[N-1][2]);
}
}
-------------------------------------------------------------------------------------------------------------
굉장히 더러운 코드 짱난다
슬라이딩 윈도우 하려면 Deque 쓴다해서 deque만들었는데 도저히 어떻게 할 줄 모르겠어서 찾아보니
배열로만 풀었다..
max[N-1] 이 행에 맥스 값이 다 저장되는데 이걸 정렬 어떻게 하고 출력할지 몰라서
시간 한참 걸림 빡대갈... ㅜ......ㅜ............ㅜ.........ㅜ
결국은 Arrays.sort(max1, Collections.reverseOrder()); // 이렇게 해서 풀었는데 ... 메서드 만들어서 풀어야 할 것같은데 어떻게 하는줄 모르겠다. . . . . . . . . . .
'백준알고리즘' 카테고리의 다른 글
백준 11720 숫자의 합 charAt (0) | 2020.04.22 |
---|---|
백준 1806 부분합[투 포인터] (0) | 2020.04.20 |
백준 2003 수들의 합 2 [투 포인터] (0) | 2020.04.18 |
백준 11403 경로 찾기 (0) | 2020.04.17 |
백준 2577 배열 숫자의 갯수 (0) | 2020.03.19 |
댓글