Skip to content

Commit 2f8e4fb

Browse files
authored
[백준 20159] 동작 그만. 밑장 빼기냐? - 누적합
1 parent dca65cb commit 2f8e4fb

File tree

1 file changed

+46
-0
lines changed

1 file changed

+46
-0
lines changed

hoseok/week81/Boj20159.java

+46
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
import java.io.*;
2+
import java.util.*;
3+
4+
class Main {
5+
public static void main(String[] args) throws Exception {
6+
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
7+
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
8+
int n = Integer.parseInt(br.readLine());
9+
StringTokenizer st = new StringTokenizer(br.readLine());
10+
long[] me = new long[n / 2];
11+
long[] other = new long[n / 2];
12+
13+
for (int i = 0; i < n; i++) {
14+
int number = Integer.parseInt(st.nextToken());
15+
if (i % 2 == 0) {
16+
me[i / 2] = number;
17+
if (i / 2 > 0) {
18+
me[i / 2] += me[i / 2 - 1];
19+
}
20+
} else {
21+
other[i / 2] = number;
22+
if (i / 2 > 0) {
23+
other[i / 2] += other[i / 2 - 1];
24+
}
25+
}
26+
}
27+
if (n == 2) {
28+
bw.write(Long.toString(Math.max(me[0], other[0])));
29+
bw.flush();
30+
bw.close();
31+
return;
32+
}
33+
34+
long max = Math.max(me[n / 2 - 1], other[n / 2 - 1]); // 밑장 안뻈을때 vs 내걸 첫번째 밑장 빼기
35+
max = Math.max(me[0] + other[n / 2 - 2], max);
36+
37+
for (int i = 1; i < n / 2; i++) {
38+
max = Math.max(max, me[i - 1] + other[n / 2 - 1] - other[i - 1]); // 내걸 밑장빼기
39+
max = Math.max(max, me[i] + other[n / 2 - 2] - other[i - 1]); // 상대방을 밑장빼기
40+
}
41+
42+
bw.write(Long.toString(max));
43+
bw.flush();
44+
bw.close();
45+
}
46+
}

0 commit comments

Comments
 (0)