이게 2급인가요..?
이해하면 5분 안에 풀 수 있는 문제입니다. 다만 설명이 어렵기 때문에 코딩하는 시간보다 이해하는 시간이 더 길다.
h번 이상 인용된 논문은 h개 이상의 논문이 있어야 하기 때문에 혼란스럽습니다.
에세이를 인용횟수 순으로 정렬한 후 에세이가 정렬된 벡터의 index를 하나씩 증가시키고, h보다 많이 인용된 에세이의 개수(답변)도 ++로 부여한다. 이때 vector(index)의 값이 답보다 작으면 그냥 답을 돌려주면 된다.
예를 들어
정렬 1, 5, 7, 20, 8, 3, 4
20, 8, 7, 5, 4, 3, 1.
답이 20이면 답이 작기 때문에 ++를 준다. 답변 = 0
8이면 답이 작으니 ++를 입력합니다. 답변 = 1
7 답이 적으면 ++를 준다. 답변 = 2
5 답이 적으면 ++를 준다. 답변 = 3
4이면 답이 작으니 ++를 입력합니다. 답변 = 4
삼 답이 4이면 답이 더 크므로 답이 주어진다.
의 순서로 실행됩니다.

#include <string>
#include <vector>
#include <algorithm>
using namespace std;
int solution(vector<int> citations) {
int answer = 0;
sort(citations.begin(), citations.end(), greater<int>());
if (!citations(0))
return 0;
for (int i = 0; i < citations.size(); i++)
{
if (citations(i) > i)
answer++;
else
break;
}
return answer;
}
