포스트

[ 프로그래머스 ] H Index

문제


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

풀이


논문 n편 중, h번 이상 인용된 논문이 h편 이상이고 나머지 논문이 h번 이하 인용되었다면 h의 최댓값이 이 과학자의 H-Index 일 때, h값을 구하는 문제로, 인용 횟수와 논문 개수가 일치한 것을 찾는다. 따라서 이름 내림차순 정렬하여 조건을 만족할 때까지 순회하며 answer 값을 증가 시키고, index가 citations 배열 요소보다 커지는 순간을 찾아, 이를 return한다.

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
30
#include <string>
#include <vector>
#include <algorithm>

using namespace std;

int solution(vector<int> citations) 
{
    int answer = citations.size();

    sort(citations.rbegin(), citations.rend());

    if (citations.size() == 1)
    {
        answer = 0;
    }

    for (int i = 0; i < citations.size(); i++)
    {
        if (i >= citations[i])
        {
            answer = i;
            break;
        }
    }


    return answer;
}

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.