BOJ 8014 Island
BOJ 8014 Island
문제 내용
개의 정점을 갖는 원형의 그래프가 주어집니다. 1번 정점과 2번 정점, 2번 정점과 3번 정점, …, 번 정점과 1번 정점이 연결되어 있습니다.
각 간선의 거리가 주어질 때, 서로 가장 멀리 떨어져 있는 두 정점 간의 거리를 구하세요.
입력
첫 번째 줄에는 정점의 개수 이 주어집니다. ()
두 번째 줄부터 줄에 걸쳐서, 1번 정점과 2번 정점 사이의 거리 , 2번 정점과 3번 정점 사이의 거리 , …, 번 정점과 1번 정점 사이의 거리 이 주어집니다. 모든 값은 정수입니다. (, )
출력
문제의 정답을 출력합니다.
문제 풀이
스포일러
이 최대 5만이고 제한 시간이 3초이기 때문에, 빠른 언어로 가능한 각 시작점에 대한 누적합을 모두 구해보는 코드가 아슬아슬하게 통과합니다.
에 풀려면 투 포인터를 적용하여 다음과 같은 방법을 쓸 수 있습니다.
- 먼저, 1번을 시작점으로 두고 구간을 오른쪽으로 확장하면서, 구간의 합이 전체 합의 절반을 초과하는 시점에서 멈춥니다.
- 그 과정에서 나오는 두 끝점 사이의 최단거리를 모두 구해서 그 중에서 최댓값을 저장합니다.
- 이제 시작점을 한 칸씩 오른쪽으로 움직이면서, 구간의 합이 전체 합의 절반 이하가 되면 오른쪽을 움직이는 것을 반복하며, 그 과정에서 만난 모든 최단거리를 이용하여 답을 업데이트합니다.
Last updated on