[PROGRAMMERS]-H-Index (정렬)

zioo·2022년 1월 26일


📃 H-Index

문제풀이

  1. h-index가 될 수 있는 0~citations의 길이를 돌면서 체크한다.
  2. h-index 이상의 값을 가지는 원소를 index라는 배열에 담고, 배열의 길이도 h-index 이상인지를 체크한다.
  3. 두 가지를 만족하지 않을 때까지 체크하여 최대값을 구한다.
  4. citations의 길이(l)보다 크거나 같은 값이 l개 이상일 경우 반복문 이후에 처리를 해준다.
  • if citations[i] >= article_count-i는 주어진 h번 이상 인용된 논문이 h편 이상이라는 조건을 그대로 풀어쓴 것이었다.
  • citations[i]는 i번 논문이 인용된 횟수이고 article_count-i는 인용된 논문의 개수를 최댓값부터 하나씩 줄여나간 것이다. (최댓값을 찾아야 하므로 가장 큰 값부터 시작)
  • 리스트는 오름차순 정렬된 상태이므로 i번째 이후는 모두 i번째보다 큰 값을 가질 것이다.

예제

citations : [0,1,2,3,3,3,3,3,3,4,10,20,30,40]
return : 4

citations : [1,6,6,6,6,6]
return : 5

citations : [0,1,2,5,6]
return : 2

코드


def solution(citations):
    citations = sorted(citations)
    l = len(citations)
    for i in range(l):
        if citations[i] >= l-i:
            return l-i
    return 0

0개의 댓글