Algorithm

[프로그래머스] H-Index (c++) 정렬

salmon16 2024. 9. 20. 20:58

출처 : https://school.programmers.co.kr/learn/courses/30/lessons/42747#

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

풀이 방법

H-Index는 특정 과학자가 발표한 논문 중, h번 이상 인용된 논문이 h 편 이상이고, 나머지 논문들은 h번 이하로 인용된 경우, 이 h의 최댓값을 의미한다.

 

H-Index의 중요한 핵심은 ‘인용 횟수’보다는 ‘인용된 논문의 수’에 중점을 둔다는 점이다.

 

논문을 정렬 후 인덱스와 비교하면 된다.

예를 들어, [1, 5, 5, 5, 5]의 정답은 4이다. 그러므로 인덱스를 하나씩 올려가며 현재의 인덱스가 인용된 수보다 크다면 해당 인덱스를 H-Index로 설정하면 된다.

 

#include <string>
#include <vector>
#include <algorithm>
#include <iostream>

using namespace std;

int solution(vector<int> citations) {
    int answer = 0;
    sort(citations.begin(), citations.end());
    int n = citations.size();
    
    for (int i = 0;i < citations.size();i++) {
        int H_index = n - i;
        if (citations[i] >= H_index) return H_index;
    }
    
    
    return answer;
}