반응형
https://www.acmicpc.net/problem/2230
이분탐색 문제였습니다.
📕 풀이방법
📔 입력 및 초기화
1. n, m, 수를 저장할 일차원 배열 a, 답을 저장할 변수 ans를 선언합니다. 2. n, m입력 후 n만큼 수를 a에 입력받습니다. 3. a를 오름차순으로 정렬해줍니다.
📔 풀이과정
n만큼 loop를 돌며 현재보는 값이 a[i]일 때 a[i] + m이상인 index를 a에서 찾습니다. a[i] + m 이상인 값이 존재한다면 ans에 그 차이의 최솟값을 저장합니다.
📔 정답출력
ans를 출력합니다.
📕 Code
#include <bits/stdc++.h>
using namespace std;
int n, m, a[100001], ans = 0x3f3f3f3f;
int main(){
cin >> n >> m;
for(int i = 0; i < n; i++) cin >> a[i];
sort(a, a + n);
for(int i = 0; i < n; i++){
auto idx = lower_bound(a, a + n, a[i] + m);
if(idx != a + n)
ans = min(ans,abs(a[i] - *idx));
}
cout << ans;
}
'Algorithm > Binary Search' 카테고리의 다른 글
(C++) - 백준(BOJ) 17266번 : 어두운 굴다리 (0) | 2021.09.19 |
---|---|
(C++) - 백준(BOJ) 1484번 : 다이어트 (0) | 2021.09.06 |
(C++) - 백준(BOJ) 2417번 : 정수 제곱근 (0) | 2021.08.15 |
(C++) - 백준(BOJ) 14627번 : 파닭파닭 (0) | 2021.08.15 |
(C++) - 백준(BOJ) 3649번 : 로봇 프로젝트 (0) | 2021.07.19 |