프로그래머스 Lv.2 H-Index 파이썬

2024. 7. 10. 15:26알고리즘문제 풀이/프로그래머스

문제 링크

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

풀이

어떤 과학자가 발표한 논문 n편 중, 

h번 이상 인용된 논문이 h편 이상이고

나머지 논문이 h번 이하 인용되었다면 h의 최댓값이 이 과학자의 H-Index이다.

 

우선 논문을 내림차순으로 정렬한다.

H-index의 값을 h로 한다면

0번째 ~ (h-1)번째는 h값보다 클 것이다.

h번째부터 마지막번째는 h값 이하일 것이다.

 

예시)

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

 

citations를 내림차순으로 정렬하면

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

 

citations[0] = 6 > 0

citations[1] = 5 > 1

citations[2] = 3 > 2

citations[3] = 1  < 3

citations[4] = 0 > 4

여기서 h값은 3이다.

 

전체 코드

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

    for h in range(n):
        if citations[h] <= h:
            return h
    
    return n