원본 : www.acmicpc.net/problem/2156
2156번: 포도주 시식
효주는 포도주 시식회에 갔다. 그 곳에 갔더니, 테이블 위에 다양한 포도주가 들어있는 포도주 잔이 일렬로 놓여 있었다. 효주는 포도주 시식을 하려고 하는데, 여기에는 다음과 같은 두 가지 규
www.acmicpc.net
풀이
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
public class Main {
public static BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
public static BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(System.out));
public static void main(String[] args) throws Exception {
int n = Integer.parseInt(reader.readLine());
int arr[] = new int[n];
for (int i = 0; i < n ; i++) {
arr[i] = Integer.parseInt(reader.readLine());
}
if (n == 1) {
writer.write(arr[0] + "");
writer.flush();
return;
} else if (n == 2) {
writer.write(arr[0] + arr[1] + "");
writer.flush();
return;
}
int max[] = new int[n];
max[0] = arr[0];
max[1] = arr[1] + arr[0];
max[2] = maxValue(arr[2] + arr[1], arr[2] + max[0]);
max[2] = maxValue(max[2], max[1]);
for (int i = 3; i < n; i++) {
max[i] = maxValue(arr[i] + arr[i - 1] + max[i - 3], arr[i] + max[i - 2]);
max[i] = maxValue(max[i], max[i - 1]);
}
writer.write(maxValueInArray(max) + "");
writer.flush();
}
public static int maxValue(int a, int b) {
if (a <= b) {
return b;
} else {
return a;
}
}
public static int maxValueInArray(int arr[]) {
int max = 0;
for (int i = 0; i < arr.length; i++) {
if (arr[i] >= max) {
max = arr[i];
}
}
return max;
}
}
댓글 영역