[백준2467_자바스크립트(javascript)] - 용액

경이·2025년 4월 11일

𝑩𝑶𝑱 (𝒋𝒔)

목록 보기
293/325

🔴 문제

용액


🟡 Sol

const fs = require('fs');
const path = process.platform === 'linux' ? '/dev/stdin' : 'input.txt';
const [[n], liquid] = fs
  .readFileSync(path)
  .toString()
  .trim()
  .split('\n')
  .map((it) => it.split(' ').map(Number));

let left = 0;
let right = n - 1;
let minAbs = Infinity;
const ans = [0, 0];

while (left < right) {
  const abs = Math.abs(liquid[left] + liquid[right]);

  if (abs < minAbs) {
    minAbs = abs;

    ans[0] = liquid[left];
    ans[1] = liquid[right];
  }

  if (liquid[left] + liquid[right] > 0) right -= 1;
  else left += 1;
}

console.log(...ans);

🟢 풀이

⏰ 소요한 시간 : -

투포인터 문제로 풀이했다.
완전 탐색으로 두 용액의 합을 모두 구하면 시간이 너무 오래걸리기 때문에, 투포인터를 사용해 유효한 경우의 수만 구해줬다.
leftright 각 포인터를 0번 인덱스, n-1번 인덱스로 잡고 특성값의 합이 0보다 크냐, 작냐에 따라 포인터를 가운데로 모아주는 형식으로 구현했다.
그리고 포인터가 옮겨질 때 마다 특성값이 0에 가까운지 비교해주는 로직을 넣어놨다.


🔵 Ref

profile
록타르오가르

0개의 댓글