티스토리 뷰

[ 프로그래머스 ] H-Index (java)

 

 

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

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

어떤 과학자가 발표한 논문의 인용 횟수를 담은 배열 citations가 매개변수로 주어질 때, 이 과학자의 H-Index를 return 하도록 solution 함수를 작성해주세요.

제한사항
과학자가 발표한 논문의 수는 1편 이상 1,000편 이하입니다.
논문별 인용 횟수는 0회 이상 10,000회 이하입니다.

 

 

 

 

출처: 프로그래머스 코딩 테스트 연습, https://programmers.co.kr/learn/courses/30/lessons/42747

 

코딩테스트 연습 - H-Index | 프로그래머스

H-Index는 과학자의 생산성과 영향력을 나타내는 지표입니다. 어느 과학자의 H-Index를 나타내는 값인 h를 구하려고 합니다. 위키백과1에 따르면, H-Index는 다음과 같이 구합니다. 어떤 과학자가 발표한 논문 n편 중, h번 이상 인용된 논문이 h편 이상이고 나머지 논문이 h번 이하 인용되었다면 h가 이 과학자의 H-Index입니다. 어떤 과학자가 발표한 논문의 인용 횟수를 담은 배열 citations가 매개변수로 주어질 때, 이 과학자의 H-

programmers.co.kr

 

 

 

핵심 

문제 이해하는데 어려웠던 문제 

'h번 이상 인용된 논문이 h편 이상이고 나머지 논문이 h번 이하 인용'

 

1. 나머지 논문은 ~ 부분은 앞 부분에서 처리되서 굳이 신경안써도 되는 부분.

2. h번 이상 인용된 논문이 h편 이상, 이 부분을 이해 못 했다. 

앞 뒤에 'h번 이상' 중 하나를 기준으로 잡아야 한다고 생각했지만 그게 틀렸음 

 

인용 횟수 [0, 1, 3, 5, 6 ]

0번 이상 인용된 논문은 5편 이상이다. => H Index는 0

1번 이상 인용된 논문은 4편 이상이다. => H Index는 1

3번 이상 인용된 논문은 3편 이상이다. => H Index는 3

5번 이상 인용된 논문은 2편 이상이다. => H Index는 2

6번 이상 인용된 논문은 1편 이상이다. => H Index는 1

 

앞 뒤 'h번 이상'을 만족하는 h이어야 하므로, 앞 뒤 h 중 더 작은 h가 H Index가 된다. 

또한, 문제에서 다른 설명은 없었지만 최대 h를 선택. 

 

 

 

추가적으로 더 궁금한 점 있으면 댓글 달아주세요

 

 

 

코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import java.util.*;
class Solution {
    public int solution(int[] citations) {
        
        Arrays.sort(citations);
        
        int ans = -1;
        for(int i = 0 ; i < citations.length ;i++) {
            ans = Math.max(ans, Math.min(citations[i], citations.length - i));
        }
 
 
        return ans;
    }
}
cs