
📃 H-Index
문제풀이
- h-index가 될 수 있는 0~citations의 길이를 돌면서 체크한다.
- h-index 이상의 값을 가지는 원소를 index라는 배열에 담고, 배열의 길이도 h-index 이상인지를 체크한다.
- 두 가지를 만족하지 않을 때까지 체크하여 최대값을 구한다.
- 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