반응형
http://www.jungol.co.kr/bbs/board.php?bo_table=pbank&wr_id=1760&sca=99&sfl=wr_hit&stx=2499
#include <stdio.h>
int N, Cnt, arr[1010], arr2[1010], sum;
void mergesort(int s, int e) {
if (s >= e) return;
int m = (s + e) / 2;
mergesort(s, m);
mergesort(m + 1, e);
int k = s, a = s, b = m + 1;
while (a <= m && b <= e) {
if (arr[a] < arr[b]) arr2[k++] = arr[a++];
else arr2[k++] = arr[b++];
}
while (a <= m) arr2[k++] = arr[a++];
while (b <= e) arr2[k++] = arr[b++];
for (int i = s; i <= e; i++) arr[i] = arr2[i];
}
//정렬 후에 1번부터 시작하며, 각
int main(void) {
scanf("%d", &N);
for (int i = 0; i < N; i++) scanf("%d", arr + i); //입력
mergesort(0, N - 1); //정렬
if (arr[0] != 1) printf("1\n"); //제일작은게 1이 아니면 1이 답
else {
sum = arr[0];
for (int i = 1; i < N; i++) { //작은 값부터 돌면서
if (sum + 1 >= arr[i]) sum += arr[i]; //다음 숫자와 갭이 있다면, 최소값은 1을 더한 것일 것임,
//다 더한 값보다 다음 숫자가 더 크다는 것은, 그 갭에서 가장 작은 숫자인 sum + 1이 최소값이라는 것
//차례대로 갔을 때 이 조건이 보장되지 않는데, 뒤에서 답이 나올 경우는 없다.
else break; //현재의 s
}
printf("%d\n", sum + 1);
}
return 0;
}
반응형
'프로그래밍 알고리즘' 카테고리의 다른 글
[정올 2514] 문자열 찾기 (0) | 2023.01.09 |
---|---|
[정올 2501] 모양 정돈 (0) | 2023.01.08 |
[정올 2498] 공약수 (0) | 2023.01.08 |
[정올 2497] 수열 (0) | 2023.01.08 |
[정올 2468] 비밀번호 (0) | 2023.01.08 |