https://school.programmers.co.kr/learn/courses/30/lessons/42747#
def solution(citations):
answer = 0
citations.sort(reverse=True)
for idx, citation in enumerate(citations):
if citation >= idx + 1:
answer = idx + 1
return answer
H-index
n
편 중,h
번 이상 인용된 논문이h
편 이상이고 나머지 논문이h
번 이하 인용되었다면h의 최댓값
이 이 과학자의 H-Index
예시 1) [3, 0, 6, 1, 5]
위와 같은 citations를 가지고 있는 과학자의 경우 H-index는 3이다.
3회 이상 인용된 논문(3, 5, 6) 3편 이상이고 나머지 논문(1, 0)이 3번 이하 인용되었다.
citation을 정렬시켜서 보면 더 편하게 H-index를 파악할 수 있겠다는 생각을 했다.
h번 이상 인용된 논문의 갯수를 세고, 나머지 논문들이 h번 이하 인용되었다는 것은 정렬된 리스트에서 한 원소를 기준으로 오른쪽 원소들과 왼쪽 원소들과 연관이 있기 때문이다.
내림차순 정렬을 선택한 이유는 반복문을 돌며 앞에서부터 확인을 하면 인덱스 + 1
만큼이 논문의 갯수가 되고, 조건을 만족하는 인덱스 + 1
의 최댓값이 H-index가 된다.
최초에는 오름차순 정렬을 생각했으나, len(citations) - idx
같이 불필요한 계산이 포함되는 이유도 있다.
원소 값 >= 인덱스 + 1
이면 answer에 인덱스 + 1
(h를 의미)을 할당미들러 문제를 풀면서 가장 오래걸렸던 것 같다.
말로는 명쾌하게 설명을 하지 못하는 한계를 느껴 손으로 쓰게 되었다.