코딩테스트 연습/programmers

[Programmers] 정렬 > H-index

수기 2022. 1. 11. 17:51

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

 

코딩테스트 연습 - H-Index

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

programmers.co.kr

citations의 값을 내림차순으로 정렬한 후,

citations[i]와 i+1가 같을때 i+1값

citations[i]보다 i+1가 더 커질때 i값

이것이 answer이 된다.

 

위에서 해당하는 경우가 없는 경우는 citations배열의 길이 값이 answer이다.

들어온 값중 가장 큰 값 (citations[0])이 0인경우의 answer은 0으로 예외 처리를 해준다.

 

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

테스트케이스

[3,0,6,1,5] 3

[4,4,4] 3

[10,9,4,1,1,1] 3

[0,0,0] 0