본문 바로가기
대딩/프로그래머스풀이

[프로그래머스 lv2] H-index 풀이

by 경아ㅏ 2022. 8. 16.

 프로그래머스의 모든 문제와 해설 보기[클릭]

 

해설

 

문제에는 발표한 논문 n편 중, h번 이상 인용된 논문이 h편 이상이고 나머지 논문이 h번 이하 인용되었다면 h의 최댓값이 이 과학자의 H-Index 라고 나와있지만, 이걸 그대로 해석해서 풀면 삽질하기 쉽다.

 

문제에 나와있는 H-index 정의 대신 아래 글을 참고하자.

 

[연구논문을 위한 핵심 10단계] H-지수(H-Index) 란 무엇인가?

일반적으로 특정 연구원의 연구성과를 평가하기 위해 얼마나 많은 논문을 발표 하였는지를 보게됩니다. 그러나 단순히 발표한 논문 수로만 그 연구원의 연구 업적을 평가 하기에는 발표한 논문

www.ibric.org

 

 

요약하면,

H-index는 논문 인용 수를 내림차순으로 나열한후, 논문의 인용 수가 논문 수보다 클 때 논문 수의 최댓값을 의미한다.

citations을 내림차순으로 정렬한 후, citations[i-1]  > i 일 때 i의 최댓값을 구하면 정답이다.

 

+) 틀린 케이스를 넣어도 정답으로 처리되는 것을 보면 테스트 케이스가 약한 듯 싶다.

 

 

코드

#include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm>
#include <tuple>
#include <vector>
#include <stack>
#include <queue>
#include <deque>
#include <set>
#include <map>
#include <unordered_set>
#include <unordered_map>
#include <cctype>
#include <iostream>

using namespace std;
using ii = pair<int, int>;
using iii = tuple<int, int, int>;

#define X first
#define Y second

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

 

 

댓글