[프로그래머스] H-Index - c++

삼식이·2025년 7월 28일

알고리즘

목록 보기
76/84

H-Index

먼저, 논문을 오름차순으로 정렬한다.

현재 논문 인용횟수보다 더 많은 인용을 받은 논문의 수를 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;
}

0개의 댓글