Algorithm

[Algorithm] 프로그래머스 H-index

씬프 2021. 7. 3. 10:56
반응형
 

코딩테스트 연습 - H-Index

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

programmers.co.kr

 

풀이

1. H-index는 n편의 논문에서 h번 이상 인용된 논문이 h편 이상인 경우 중 최대값이 되는 h다.

 (h번 이하에 대한 조건도 있었는데, 사실 필요 없어 보인다.)

2. 먼저 인용횟수를 정렬한다.

3. 논문 전체 n편을 기준으로 n, n-1, n-2, ... , 0번 인용된 것(h번)으로 내려오면서 몇 편이 인용되었는지, h편 이상인지 확인했다.

 

전체 소스코드

import java.util.*;

class Solution {
    public int solution(int[] citations) {
        int answer = citations.length;
        
        Arrays.sort(citations);
        while(true) {
            int cnt = 0;
            for (int i = citations.length-1 ; i >= 0; i--) {
                if (answer <= citations[i]) cnt++;
            }
            if (answer <= cnt) break;
            answer--;
        }
        return answer;
        
    }
}

 

풀이 중 9번 테스트케이스가 안풀리는 상황이 있었는데, 중간에 반복문에서 0을 제외하고 진행했었음. 0을 포함하도록 코드를 변경하고 해결됨.