알고리즘 공부[Javascript]/백준

[백준] 1920번 / 실버4 / 수 찾기 / Node.js

Kevinkb 2021. 8. 5. 21:07

문제

N개의 정수 A[1], A[2], …, A[N]이 주어져 있을 때, 이 안에 X라는 정수가 존재하는지 알아내는 프로그램을 작성하시오.

입력

첫째 줄에 자연수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 N개의 정수 A[1], A[2], …, A[N]이 주어진다. 다음 줄에는 M(1 ≤ M ≤ 100,000)이 주어진다. 다음 줄에는 M개의 수들이 주어지는데, 이 수들이 A안에 존재하는지 알아내면 된다. 모든 정수의 범위는 -231 보다 크거나 같고 231보다 작다.

출력

M개의 줄에 답을 출력한다. 존재하면 1을, 존재하지 않으면 0을 출력한다.

예제 입력

5
4 1 5 2 3
5
1 3 7 9 5

예제 출력

1
1
0
0
1

소스 코드

// fs
let [n, arr, m, check] = require('fs').readFileSync('/dev/stdin').toString().trim().split('\n');
arr = arr.split(' ').map(Number).sort((a,b) => a - b);;
check = check.split(' ').map(Number);

let result = [];

for (let i = 0; i < check.length; i++) {
  let min = 0;
  let max = arr.length - 1;
  let bol = 0;

  while (min <= max) {
    let mid = parseInt((min + max) / 2);
    if (check[i] === arr[mid]) {
      bol = 1;
      result.push(1);
      break;
    } else if (check[i] < arr[mid]) {
      max = mid - 1;
    } else if (check[i] > arr[mid]) {
      min = mid + 1;
    }
  }
  if (bol === 0) {
      result.push(0)
  }
}

console.log(result.join("\n"))


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

let input = [];

rl.on('line', function(line) {
    input.push(line);
}).on('close', () => {
    let [n, arr, m, check] = input
    arr = arr.split(' ').map(Number).sort((a,b) => a - b);;
    check = check.split(' ').map(Number);
    let result = [];

    for (let i = 0; i < check.length; i++) {
      let min = 0;
      let max = arr.length - 1;
      let bol = 0;

      while (min <= max) {
        let mid = parseInt((min + max) / 2);
        if (check[i] === arr[mid]) {
          bol = 1;
          result.push(1);
          break;
        } else if (check[i] < arr[mid]) {
          max = mid - 1;
       } else if (check[i] > arr[mid]) {
          min = mid + 1;
        }
      }
      if (bol === 0) {
          result.push(0)
      }
    }
    console.log(result.join("\n"))
    process.exit();
})