https://www.acmicpc.net/problem/10815

문제

앞구르기 뒷구르기 하면서 봐도 전형적인 이분탐색 문제이다 원래는 실버 1 문제만 뽑으려고 했는데 토탐정 설정을 잘못했나보다 풀어놓고 엥 이게 실버 1이라고..? 했는데 알고보니 실버 5였다.

const INPUT_FILE = process.platform === "linux" ? "/dev/stdin" : "./inputs.txt";
const inputs = require("fs")
  .readFileSync(INPUT_FILE)
  .toString()
  .trim()
  .split("\n");
const sangguenCard = inputs[1]
  .split(" ")
  .map(Number)
  .sort((a, b) => a - b);
const numberCard = inputs[3].split(" ").map(Number);
 
const result = [];
for (let i = 0; i < numberCard.length; i++) {
  result.push(binarySearch(numberCard[i]));
}
 
function binarySearch(target) {
  let left = 0;
  let right = sangguenCard.length - 1;
  while (left <= right) {
    const mid = Math.floor((left + right) / 2);
    const midValue = sangguenCard[mid];
    if (midValue === target) return 1;
    if (midValue < target) {
      left = mid + 1;
    } else {
      right = mid - 1;
    }
  }
  return 0;
}
console.log(result.join(" "));

너무 전형적인 이분탐색이라 따로 설명할 것도 없네…음.. 암튼 금방 풀었잖아 한잔해~