반응형
Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

undefined

[백준] 3273 두 수의 합 - Node/Js 본문

Coding Test

[백준] 3273 두 수의 합 - Node/Js

JavaScripter 2022. 7. 29. 06:37
반응형

문제 설명

 

3273번: 두 수의 합

n개의 서로 다른 양의 정수 a1, a2, ..., an으로 이루어진 수열이 있다. ai의 값은 1보다 크거나 같고, 1000000보다 작거나 같은 자연수이다. 자연수 x가 주어졌을 때, ai + aj = x (1 ≤ i < j ≤ n)을 만족하는

www.acmicpc.net


문제 풀이

const readline = require('readline');
const rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout,
});

let input = [];
let count = 0;
let N = 0;
let t = 0;

rl.on('line', function (line) {
  if (!count) {
    N = +line;
  } else if (count === 1) {
    input = line.split(' ').map(e => +e);
  } else {
    t = +line;
  }
  count++;
}).on('close', function () {
  solution(input, N, t);
  process.exit();
});

const solution = (input, n, t) => {
  // input 정렬
  input.sort((a, b) => a - b);
  // left right count 정의
  let left = 0;
  let right = input.length - 1;
  let count = 0;
  // left가 더 커질때까지 while
  while (left < right) {
    // sum = input[left] + input[right]
    let sum = input[left] + input[right];
    // sum = t 면 count++ left++
    if (sum === t) {
      count++;
      left++;
    }
    // sum > t 면 right--
    if (sum > t) right--;
    // sum < t 면 left++
    if (sum < t) left++;
  }
  // count 리턴
  console.log(count);
};

배운 점

전형적인 투포인트 문제

반응형
Comments