어흥
[백준 2230] 수 고르기 (C++) 본문
728x90
반응형
문제 링크: https://www.acmicpc.net/problem/2230
1. 주의할 점
- 서로 같은 곳을 가리킬 수 있다
- 투 포인터를 이용한다
2. 구현
- 입력받은 수를 배열에 저장한 후, 정렬한다
- 투 포인터를 활용하여 L이 가리키는 값과 R이 가리키는 값의 차이를 비교하여 답을 도출한다
#include <iostream>
#include <algorithm>
using namespace std;
long long arr[100000];
int main() {
ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
int num;
long long limit;
cin >> num >> limit;
for (int i = 0; i < num; i++)
cin >> arr[i];
sort(arr, arr + num);
int r = 0, l = 0;
long long diff = 0, result = 2000000001;
while (l <= r && r < num) {
if (diff >= limit) {
result = min(result, diff);
if (l == r) {
r++;
if (r == num) break;
diff = arr[r] - arr[l];
}
else {
l++;
diff = arr[r] - arr[l];
}
}
else {
r++;
if (r == num) break;
diff = arr[r] - arr[l];
}
}
cout << result;
system("pause");
return 0;
}
728x90
반응형
'알고리즘 > 백준' 카테고리의 다른 글
[백준 2211] 네트워크 복구 (C++) (0) | 2020.05.12 |
---|---|
[백준 10282] 해킹 (C++) (0) | 2020.05.10 |
[백준 1644] 소수의 연속합 (C++) (0) | 2020.05.10 |
[백준 16724] 피리 부는 사나이 (C++) (0) | 2020.05.10 |
[백준 11400] 단절선 (C++) (0) | 2020.05.08 |
Comments