문제: 용액 합성하기
분류: 두 포인터
난이도: 골드5
배열의 왼쪽 끝과 오른쪽 끝에 포인터를 두어 두 포인터가 가리키는 특성값의 합이 음수이면 왼쪽 포인터를 오른쪽으로, 양수이면 오른쪽 포인터를 왼쪽으로 옮기며 0에 가장 가까운 특성값의 합을 구한다.
const fs = require("fs");
const filePath = process.platform === "linux" ? "/dev/stdin" : "input.txt";
let [N, A] = fs.readFileSync(filePath).toString().trim().split("\n");
let answer = Infinity;
let left = 0;
let right = +N - 1;
A = A.split(" ").map(Number);
while (left < right) {
let temp = A[left] + A[right];
if (Math.abs(temp) < Math.abs(answer)) answer = temp;
if (temp < 0) left++;
else right--;
}
console.log(answer);