https://school.programmers.co.kr/learn/courses/30/lessons/42747
가장 높은 원소부터 검사해나간다. h이상인 원소의 개수가 h개 이상이면 바로 h를 리턴한다.
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
int solution(vector<int> citations) {
int answer = 0;
int h = *max_element(citations.begin(), citations.end());
int hup = 0;
for(h; h >= 0; h--)
{
for(int c : citations)
{
if(c >= h)
hup++;
if(hup >= h)
return h;
}
hup = 0;
}
return answer;
}
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
int solution(vector<int> citations) {
sort(citations.begin(), citations.end(), greater<int>());
for (int i = 0; i < citations.size(); ++i) {
if (citations[i] < i + 1) {
return i;
}
}
return citations.size();
}
citations를 내림차순으로 정렬한다.
가장 큰 값부터 검사하는데 h 가 i가된다.
citations[i] < i + 1이 되는순간 == h번 이상 인용한 횟수가 h편 이상이 되는 순간
바로 h를 리턴해준다.
모든 인용 횟수가 1000 이상인 경우 citations의 size를 리턴한다.