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

Inryu·2021년 8월 25일
0

Problem Solving

목록 보기
43/51
post-thumbnail

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

문제풀이

citations 벡터를 내림차순 정렬하면 다음과 같다.

citations[i]회 이상 인용논문의 개수는 최대 i+1편 이상일 수 밖에 없다.
따라서 hi+1이 된다.


이때 citations[i]<i+1 이면, 더 이상 h를 증가시킬 수 없고 작아지기만 하므로 멈추면 된다.

코드

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

using namespace std;

int solution(vector<int> citations) {
    int answer = 0;
    
    sort(citations.begin(),citations.end());
    reverse(citations.begin(),citations.end()); //내림차순
    
    int i;
    for(i=0;i<citations.size();i++){
        // citations[i] 회 이상 인용, (i+1)편 -> h:i+1!
        // citations[i] < (i+1) 이면 더 h는 더 이상 늘어날 수 없음
        if(citations[i]<(i+1)){ 
            break;
        }
    }
    answer=i;
    return answer;
}
profile
👩🏻‍💻

0개의 댓글