[프로그래머스] H-index_JAVA

2022. 2. 22. 14:19알고리즘/프로그래머스

반응형

문제 링크

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

 

코딩테스트 연습 - H-Index

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

programmers.co.kr

 

문제만 이해하면 금방 풀 수 있는 문제이다.

어떤 과학자가 발표한 논문 n편 중, h번 이상 인용된 논문이 h편 이상이고 나머지 논문이 h번 이하 인용되었다면
h의 최댓값이 이 과학자의 H-Index입니다.

먼저 인용 횟수로 정렬한다.

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

[0, 1, 3, 5, 6] 으로 정렬된 후, answer를 0으로 초기화 하고 'h번 이상 인용된 논문의 개수'로 둔다.

 

citations : 6   >  answer : 0     인용 횟수보다 낮으니 answer++

citations : 5   >  answer : 1      인용 횟수보다 낮으니 answer++

citations : 3   >  answer : 2.    인용 횟수보다 낮으니 answer++

citations : 1   <  answer : 3.    인용 횟수보다 커져 break;

 

3번이상 인용된 논문은 [6, 5, 3] 3편 이상이고 나머지 논문은 [0, 1]로 3번 이하로 인용되었으므로

H-index 는 3이된다.

 

import java.util.Arrays;
import java.util.Collections;
class Solution {
    public int solution(int[] citations) {
        int answer = 0;
        
        Arrays.sort(citations);
        for (int i = citations.length - 1; i > -1; i--) {
            if (answer < citations[i] )
                answer++;
            else
                break;
        }
        return answer;
    }
}