[알고리즘 프로그래머스] H-Index (LEVEL 2)

(문제) H-Index [정렬]


H-Index는 과학자의 생산성과 영향력을 나타내는 지표입니다.

어느 과학자의 H-Index를 나타내는 값인 h를 구하려고 합니다.

위키백과1에 따르면, H-Index는 다음과 같이 구합니다.

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

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

입력설명

입력으로는 citations 라는 숫자가 들어있는 배열이 들어옵니다.

과학자가 발표한 논문의 수는 1편 이상 1,000편 이하입니다.

논문별 인용 횟수는 0회 이상 10,000회 이하입니다.

출력설명

어떤 과학자가 발표한 논문의 인용 횟수를 담은 배열 citations가 매개변수로 주어질 때, 이 과학자의 H-Index를 return

테스트케이스

입력예제 출력예제
[3, 0, 6, 1, 5] 3
[31, 66] 2
입출력 예 설명
이 과학자가 발표한 논문의 수는 5편이고, 그중 3편의 논문은 3회 이상 인용되었습니다.
그리고 나머지 2편의 논문은 3회 이하 인용되었기 때문에 이 과학자의 H-Index는 3입니다.

해결방법

안에 있는 값이 h번 인용된 논문이 h 편 이상

논문의 각 인용 횟수
[0, 1, 3, 5, 6]

h-index는 나의 논문 중의, 인용 횟수이다!! 인덱스로 접근하면 된다…

인용 횟수 h 번 된게 나의 논문 h개 이상 이 되어야 하므로

인용 횟수 0은 0, 1, 3, 5, 6 을 만족한다. ( 5 개 )
인용 횟수 1은 1, 3, 5, 6 을 만족한다. ( 4 개 )
인용 횟수 2는 3, 5, 6 을 만족한다. ( 3 개 )
인용 횟수 3은 3, 5, 6 을 만족한다. ( 3 개 )
인용 횟수 4는 5, 6 을 만족한다. ( 2 개 ) [안된다. 인용 횟수가 개수 보다 크므로]
인용 횟수 5는 5, 6 을 만족한다. ( 2 개 ) [안된다. 인용 횟수가 개수 보다 크므로]
논문의 개수는 총 5개이므로 여기서 끝난다.

그래서 최대의 인용 횟수를 구하면 그것이 h-index 이다.

여기서는 3이 최대의 인용 횟수이다.

다른 예를 들어보자

논문의 각 인용 횟수
[33, 61]

인용 횟수 0은 33, 61을 만족한다. ( 2 개 )
인용 횟수 1은 33, 61을 만족한다. ( 2 개 )
인용 횟수 2는 33, 61을 만족한다. ( 2 개 )
논문의 개수는 총 2개 이므로 여기서 끝난다.

최대 h-index는 2가 된다.


코드

def solution(citations):
    n = len(citations)
    
    citations.sort()

    for i in range(n):
        if citations[i] >= n-i:
            return n-i

    return 0

댓글남기기