반응형
https://www.acmicpc.net/problem/2230
2230번: 수 고르기
N개의 정수로 이루어진 수열 A[1], A[2], …, A[N]이 있다. 이 수열에서 두 수를 골랐을 때(같은 수일 수도 있다), 그 차이가 M 이상이면서 제일 작은 경우를 구하는 프로그램을 작성하시오. 예를 들어
www.acmicpc.net
[ 문제풀이 ]
1. arr 배열에 수들을 입력받고, 오름차순으로 정렬합니다.
2. s = N - 2, e = N - 1로 설정하고, arr[ start ] + arr[ end ]의 값이 M보다 크다면 ans와 값을 비교하여 더 작은 값을 ans에 저장하고, e--를 해주고 그렇지 않다면 s--를 해줍니다.
3. s 가 0보다 작아질 때 까지 반복해줍니다.
4. ans를 출력합니다.
[ 소스코드 ]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | #include<iostream> #include<algorithm> using namespace std; int N, M; int arr[100000]; int main() { scanf("%d %d", &N, &M); for (int i = 0; i < N; i++) { scanf("%d", &arr[i]); } sort(arr, arr + N); int s = N-2; int e = N - 1; int ans = 2000000001; while (s >= 0) { int temp = arr[e] - arr[s]; if (temp >= M) { ans = min(ans, temp); e--; } else { s--; } } printf("%d", ans); } | cs |
반응형
'백준' 카테고리의 다른 글
[ 백준 ] 13144번 - List of Unique Numbers (C++) (0) | 2023.04.10 |
---|---|
[ 백준 ] 22862번 - 가장 긴 짝수 연속한 부분 수열 (large) (C++) (0) | 2023.04.09 |
[ 백준 ] 17400번 - 깃발춤 (C++) (0) | 2023.04.07 |
[ 백준 ] 1306번 - 달려라 홍준 (C++) (0) | 2023.04.06 |
[ 백준 ] 17845번 - 수강 과목 (C++) (0) | 2023.04.05 |