본문 바로가기

Problem Solving/프로그래머스

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


 

#include <string>
#include <vector>
#include <functional>

using namespace std;

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

문제는 발표한 논문 N개가 있을 때 그 중 K번 인용된게 K개 있는 최대 K값을 찾는 문제입니다.

간단하게 인용된 횟수를 내림차순(높은게 앞으로) 정렬하고 Index와 논문의 인용수가 같거나 인용수가 작으면 정답 값으로 넣습니다.

 

ex: 10 8 6 4 ... 이라면 10번 인용된 것은 1개 8번 인용된 것은 최소 2개 6번 인용된 것은 최소 3개이므로 n번 인용된 논문이 최소 n개인 순간을 찾을 수 있습니다.

 

고로 높은 순으로 정렬하고 보면 조건을 충족하는 논문을 찾을 수 있습니다.

 

생각해보니 바로 충족하는 순간을 찾았을 때 return 해도 될 것 같아서 테스트하려고 했으나 이미 다른 사람들의 풀이를 보니 그렇게 푼 사람이 있어서 따로 시도해보지는 않았습니다.


문제: https://programmers.co.kr/learn/courses/30/lessons/42747#

 

코딩테스트 연습 - H-Index

H-Index는 과학자의 생산성과 영향력을 나타내는 지표입니다. 어느 과학자의 H-Index를 나타내는 값인 h를 구하려고 합니다. 위키백과1에 따르면, H-Index는 다음과 같이 구합니다. 어떤 과학자가 발표

programmers.co.kr