문제링크 : https://www.acmicpc.net/problem/16435
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int, int> pii;
const int MAX = INT_MAX;
int N, L, arr[10001];
int main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
cin >> N >> L;
for(int i=0; i<N; i++) cin >> arr[i];
sort(arr, arr+N);
for(int i=0; i<N; i++)
{
if(arr[i] <= L) L++; //길이 체크 및 증가
}
cout << L;
return 0;
}
간단한 정렬을 이용한 문제이다.
입력받은 배열에 대해서 정렬을 해준 뒤, 배열의 처음부터 값을 체크하며 L보다 같거나 작은 경우에 먹는 것이 가능하다.
무사히 먹은 경우에는 길이가 증가하므로 체크도 겸하는 L의 길이를 증가시켜준다.
증가된 L의 길이를 기준으로 남은 배열 값에 대해서도 같은 방식으로 체크하며 L의 길이를 증가시키게 된다.
'백준 > 실버' 카테고리의 다른 글
[백준 1059번] 좋은 구간 (C++) (0) | 2024.03.31 |
---|---|
[백준 2012번] 등수 매기기 (C++) (0) | 2024.03.30 |
[백준 15565번] N과 M (11) (C++) (0) | 2024.03.28 |
[백준 5568번] 카드 놓기 (C++) (0) | 2024.03.27 |
[백준 1431번] 시리얼 번호 (C++) (0) | 2024.03.26 |