본문 바로가기
Algorithm/C++

[백준 2230] 수 고르기

by imagineer_jinny 2022. 11. 1.

2230번: 수 고르기 (acmicpc.net)

 

2230번: 수 고르기

N개의 정수로 이루어진 수열 A[1], A[2], …, A[N]이 있다. 이 수열에서 두 수를 골랐을 때(같은 수일 수도 있다), 그 차이가 M 이상이면서 제일 작은 경우를 구하는 프로그램을 작성하시오. 예를 들어

www.acmicpc.net

 

 

 

정답 코드

#include <bits/stdc++.h>
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;
}

'Algorithm > C++' 카테고리의 다른 글

[백준 2003] 수들의 합 2  (0) 2022.11.01
[백준 1806] 부분합  (0) 2022.11.01
[백준 14888] 연산자 끼워넣기  (0) 2022.10.20
[백준 1789] 수들의 합  (0) 2022.10.18
[백준 11727] 2 x n 타일링 2  (0) 2022.10.12

댓글