먼저, 논문을 오름차순으로 정렬한다.
현재 논문 인용횟수보다 더 많은 인용을 받은 논문의 수를 tmp 변수에 저장한다. 그러고 난 후, 현재 인용 수가 tmp변수보다 크거나 같을 때 논문의 수(h-index)를 반환한다.
이 문제를 처음보면 이해가 안될 수 있다.. 인용 수, 인용 수 이상인 논문의 수.. 단어가 헷갈린다 그래서 문제 정의를 명확히 하고 넘어가야 정확히 풀 수 있다.
tmp는 "현재 인용 수 이상인 논문이 몇 편 있는지"를 의미한다.
citations[i] >= tmp는 현재 인용 수 이상인 논문이 tmp편 이상 있다는 의미이다.
즉, 이 조건을 만족하는 순간의 tmp가 바로 최대 H-Index이다.
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
int solution(vector<int> citations) {
int answer = 0;
sort(citations.begin(), citations.end());
for(int i=0; i<citations.size(); i++) {
int tmp = citations.size() - i;
if (citations[i] >= tmp) {
answer = tmp;
break;
}
}
return answer;
}