/* 수 찾기 */
const fs = require('fs');
// const filePath = process.platform === 'linux' ? '/dev/stdin' : '../input.txt';
const filePath = process.platform === 'linux' ? '/dev/stdin' : 'BOJ/input.txt';
const input = fs.readFileSync(filePath).toString().trim().split('\n');
const N = +input.shift();
const A = input.shift().split(' ').map(Number);
const M = +input.shift();
const NUMBER_LIST = input.shift().split(' ').map(Number);
/**
* 정렬된 A[]에 num이 있는지 이분탐색으로 찾아서 boolean 값으로 반환해주는 함수
*
* @param {number[]} SORTED_A 정렬된 A[]
* @param {number} num 찾을 수
* @returns {boolean} 있다면 true, 없다면 false
*/
function isFound(SORTED_A, num) {
let [start, end] = [0, N - 1];
let mid = 0;
while (start <= end) {
mid = Math.floor((start + end) / 2);
if (SORTED_A[mid] === num) {
return true;
} else if (SORTED_A[mid] < num) {
start = mid + 1;
} else if (SORTED_A[mid] > num) {
end = mid - 1;
}
}
return false;
}
function solution() {
let result = [];
const SORTED_A = [...A].sort((a, b) => a - b);
NUMBER_LIST.forEach((num) => {
result.push(isFound(SORTED_A, num) ? 1 : 0);
});
console.log(result.join('\n'));
}
solution();
'PS > 백준' 카테고리의 다른 글
백준 / 큐 / 1966번 / 프린터 큐 / JS (2) | 2023.03.24 |
---|---|
백준 / 그래프 / 2606번 / 바이러스 / JS (0) | 2023.03.16 |
백준 / 투 포인터 / 1644번 / 소수의 연속합 / JS (0) | 2023.02.06 |
백준 / 정렬 / 2587번 / 대표값2 / JS (0) | 2023.02.05 |