[백준] PS/Java
[백준 2118] 두 개의 탑 - JAVA
SH3542
2025. 2. 6. 19:28
https://www.acmicpc.net/problem/2118
누적 합 + 투 포인터
시계 방향이 반시계 방향보다 짧은 거리일 동안
답을 시계 방향과 비교한다.
다음 포인터는 반시계 방향이 시계 방향보다 짧은 거리임이 보장되므로
답을 반시계 방향과 비교한다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
static int N, total, ans;
static int[] sum;
public static void main(String args[]) throws IOException {
N = Integer.parseInt(br.readLine());
sum = new int[N];
sum[0] = Integer.parseInt(br.readLine());
for (int i = 1; i < N; i++) {
sum[i] = sum[i - 1] + Integer.parseInt(br.readLine());
}
total = sum[N - 1];
int r = 1;
for (int l = 0; l < N; l++) {
while (r < N && sum[r] - sum[l] < total - (sum[r] - sum[l])) {
ans = Math.max(ans, sum[r] - sum[l]);
r++;
}
if (r < N) {
ans = Math.max(ans, total - (sum[r] - sum[l]));
}
}
System.out.println(ans);
}
}