본문 바로가기

알고리즘/Programmers

Programmers / Sort / H-index

< 문제링크 >

https://www.welcomekakao.com/learn/courses/30/lessons/42747

< 풀이 >

1. 먼저 논문 인용수를 내림차순으로 정렬한다.

2. 해당 인덱스보다 논문 인용수가 같거나 작아지는 지점이 생기면 그 때의 인덱스가 H-index가 된다.

-> 만약, 그 지점이 없다면 논문의 수가 H-index가 된다.

< 코드 >

#include <string>
#include <vector>
#include <algorithm>
using namespace std;

bool cmp(int a, int b)
{
    return a > b;
}

int solution(vector<int> citations) {
    int answer = 0;
    // 내림차순 정렬
    sort(citations.begin(), citations.end(), cmp);
    for (int i = 0; i < citations.size(); i++) {
        // 인덱스보다 인용수가 같거나 작아지는 시점이 h-index 이다.
        if (i >= citations[i]) return i;
    }
    // 끝까지 가도 작아지는 지점이 없다면 논문의 수가 h-index 이다.
    return citations.size();
}