문제 풀이
- 투 포인터 문제
- start, end 두개의 포인터를 조작해서 구현한다.
- 두 수의 차가 원하는 결과보다 작다면 end를 증가시킨다(큰 수가 증가된다)
- 두 수를 비교하여 값의 차이를 이용해 답을 도출한다.
문제 코드
#include <iostream>
#include <algorithm>
using namespace std;
int n, m;
int a[100005];
int mn = 0x7fffffff;
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
cin >> n >> m;
for(int i = 0; i < n; i++) cin >> a[i];
sort(a, a+n);
int en = 0;
for(int st = 0; st < n; st++){
while(en < n && a[en] - a[st] < m) en++;
if(en == n) break; // en이 범위를 벗어날 시 종료
mn = min(mn, a[en] - a[st]);
}
cout << mn;
}
https://www.acmicpc.net/problem/2230
'Koala - 10기 > 코딩테스트 준비 스터디' 카테고리의 다른 글
[백준/Python] 21610 마법사 상어와 비바라기 (0) | 2023.03.26 |
---|---|
[백준/python] #14465 : 소가 길을 건너간 이유 (0) | 2023.03.26 |
[백준/python] 치킨 배달 (0) | 2023.03.25 |
[백준/Python] 2467 : 용액 (0) | 2023.03.24 |
[백준/C++] 14891 : 톱니바퀴 (0) | 2023.03.23 |