https://www.acmicpc.net/problem/11663
로직
이진탐색 활용
현재 값이 배열에서 어느 위치(현재 값보다 작은 값이 몇개 있는지)를 확인
- 이 떄 끝나는 점은 해당 값이 포함이 되야함 => 현재값+1의 값을 탐색
a부터 b까지의 선에 점이 몇개 있는지 탐색 가정
- a보다 작은 값의 개수 확인 => A
- b보다 작거나 같은 값의 개수 확인(b+1 확인) => B
- b보다 작거나 같으면서 a보다는 큰 값의 수 = B-A
const fs = require('fs');
const URI = process.platform === 'linux'? 'dev/stdin':'./11663.txt';
const inputs = fs.readFileSync(URI).toString().trim().split('\n').map((x)=>x.split(' ').map(Number));
const biSearch = (nums,value)=>{
let [s,e] = [0,nums.length -1];
let m;
while (s<=e){
m = Math.floor((s+e)/2);
if (nums[m] < value) s = m+1;
else if (nums[m] > value) e = m -1;
else return m -1
}
return e
}
const [N,M] = inputs[0];
const nums = inputs[1];
nums.sort((a,b)=>(a-b))
const ans = new Array();
for (let i = 2; i< M+2; i ++){
const [s,e] = inputs[i];
const value = biSearch(nums,e+1)-biSearch(nums,s);
ans.push(value)
}
console.log(ans.join('\n'))
'알고리즘 문제 풀이 > Javascript' 카테고리의 다른 글
Javascript[nodeJS] 백준 2195 문자열 복사 (0) | 2024.04.11 |
---|---|
Javascript 백준 2075 N번째 큰 수 (0) | 2024.04.01 |
Javascript 백준 19941 햄버거 분배 (0) | 2024.03.28 |
JavaScript(with Python) 백준 17390 이건 꼭 풀어야 해! (0) | 2023.11.16 |
Javascript 백준 1890 점프 (0) | 2023.11.08 |