Publish:

태그: ,

카테고리:

https://school.programmers.co.kr/learn/courses/30/lessons/42747
난이도 ⭐⭐

문제

HIndex


나의 풀이

처음 문제를 마주했을 땐 바로 이해가 되지 않아서 조금 힘들었다.
고려해야 할 케이스는 [11, 12] 였다. 11번 이상 인용되었지만, 논문은 2편만 있으므로 H-Index는 2이다.
먼저 배열을 오름차순으로 정렬하면 배열은 인용 수가 작은 순서대로 나열될 것이다.
이후 indexindex = citations.size() - i; 로 지정한다.
H-Index는 아무리 인용 수가 높아도 결국 인용된 논문의 갯수도 고려되어야 하기 때문에, 논문의 갯수인 배열의 size 로 판별해야 한다.
설정된 index가 배열의 각 값보다 작거나 같다면 ([3, 0, 5] 케이스 : H-Index는 2 => H-Index는 각 배열의 값보다 작거나 같을 수 있다.)
H-Index가 될 수 있다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include <string>
#include <vector>
#include <algorithm>
using namespace std;

int solution(vector<int> citations)
{
    int index = 0;

    sort(citations.begin(), citations.end());       // 먼저 오름차순 정렬

    // n편 중, h번 이상 인용된 논문이 h편 이상이면 h가 index
    // [3, 0] -> 1
    // [3, 0, 5] -> 2
    // [11, 12] -> 2


    for (int i = 0; i < citations.size(); i++)
    {
        index = citations.size() - i;

        if (index <= citations[i])
        {
            return index;
        }
    }

    return 0;
}

이슈 및 공부한 것을 기록해두는 개인 블로그 입니다. 댓글, 피드백 환영합니다 🙂

Update:

댓글남기기