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(" "));너무 전형적인 이분탐색이라 따로 설명할 것도 없네…음.. 암튼 금방 풀었잖아 한잔해~