
알고리즘 분류 : 투 포인터
난이도 : 골드5
출처 : 백준 - 용액 합성하기



투포인터 방식으로 문제를 해결한다.
배열에 값을 저장하고 맨앞(p1)과 맨뒤(p2) 인덱스의 합을 구한다.
이때 해당 값의 절대값이 양수일 경우 p2를 -1한다.
해당 값의 절대값이 음수일 경우 p1을 +1한다.
p1,p2인덱스 값의 합이 가장 0에 가까울때의 값을 출력한다.
import java.util.*;
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
int arr[] = new int[N];
StringTokenizer st = new StringTokenizer(br.readLine());
for(int i=0;i<N;i++) {
arr[i] = Integer.parseInt(st.nextToken());
}
int zeroVal=200_000_001;
int p1 = 0, p2 = N-1;
while(p1<p2) {
int gap = arr[p2]+arr[p1];
if(Math.abs(zeroVal)>Math.abs(gap))
zeroVal = gap;
if(gap>0)
p2--;
else
p1++;
}
System.out.println(zeroVal);
}
}

골드5치고 많이 쉬운 문제다.