정올 문제풀이
입력받은 숫자들을 더해서 만들 수 없는 최소 숫자를 구하기
제출코드
c++
#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
int n;
int arr[1000];
scanf("%d", &n);
for (int i = 0; i < n; i++)
scanf("%d", arr + i);
sort(arr, arr + n, less<int>());
int res = 0;
for (int i = 0; i < n; i++)
{
if (res + 1 < arr[i])
break;
res += arr[i];
}
++res;
printf("%d\n", res);
return 0;
}
입력 예
7
3 1 6 2 7 30 1
정렬!
1 1 2 3 6 7 30
res = 0;
res(0) + 1 < 1 ? false
res(0) += 1;
res(1) + 1 < 1 ? false
res(1) += 1;
res(2) + 1 < 2 ? false
res(2) += 2;
res(4) + 1 < 3 ? false
res(4) += 3;
res(7) + 1 < 6 ? false
res(7) += 6;
res(13) + 1 < 7 ? false
res(13) += 7;
res(20) + 1 < 30 ? true
break;
20까지 측정할 수 있고 21이 측정할 수 없는 최소숫자이다
반응형
'코딩테스트 > 정올' 카테고리의 다른 글
정올 614, 204, 1303 문제풀이 (0) | 2022.06.08 |
---|---|
정올 1183 동전 자판기(下) 문제풀이 (0) | 2020.07.23 |
정올 2194 요플레 공장 문제풀이 (0) | 2020.07.02 |
정올 1828 냉장고 (0) | 2020.07.01 |
정올 1370 회의실 배정 (0) | 2020.06.30 |