Koalitsiya 2023. 1. 10. 13:34
 

프로그래머스

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

programmers.co.kr

[3, 0, 6, 1, 5]에서 3번이상 인용된 논문이 3편이고 이외의 논문은 3회 이하 인용되었기에 H-Index는 3이다.

다른 예시로 [5,4,3,6,2,1,5]가 있다고 할 때 우선 풀이하기 좋도록 내림차순으로 정렬하면 [6,5,5,4,3,2,1]이 된다.

 

arr = [6,5,5,4,3,2,1]

 

이것의 H-Index를 구하면 아래 표와 같다.

i = 0 6 H-Index = 1
i = 1 6,5 H-Index = 2
i = 2 6,5,5 H-Index = 3
i = 3 6,5,5,4 H-Index = 4
i = 4 6,5,5,4,3 X

표를 보면 5에서부터는 숫자가 H-Index보다 작아지므로 H-Index는 4가 된다.

이를 보면 arr[i]가 i이하가 되기 전의 H-Index값이 최대임을 알 수 있다.

 

풀이 방법

1. citations의 요소들을 내림차순으로 정렬한다.

2. citations[i]가 i이하면 break, 아니면 HIndex++을 한다.

3. 반복문이 끝나면 HIndex를 리턴

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

using namespace std;

int solution(vector<int> citations) {
    int HIndex = 0;
    
    sort(citations.begin(), citations.end(), greater<int> ());

    
    for(int i = 0; i < citations.size(); i++) {
        if(citations[i] <= i) break;
        else HIndex++;
    }
    
    return HIndex;
}