https://programmers.co.kr/learn/courses/30/lessons/42747
코드 작성보다 H-Index 이해가 더 어려웠던 문제다.
H-Index에 대해 이해가 잘 안되어서 나무위키를 찾아보았다. (🔗 링크)
발표한 논문 n편 중, h번 이상 인용된 논문이 h편 이상일 때 h의 최댓값을 H-Index라고 한다.
이게 무슨 말이냐고요 ㅠㅡㅠ
그래서 테스트 케이스를 더 찾아보았다.
Input) [2, 18, 22, 23]
Output) 3
👉🏻 발표한 논문 4편 중, 3회 이상 인용된 논문은 3편 이상이다. (3편)
나머지 논문은 3번 이하로 인용되었다. (1편)
따라서 H-Index는 3이다.
Input) [2, 3]
Output) 2
👉🏻 발표한 논문 2편 중, 2회 이상 인용된 논문은 2편 이상이다. (2편)
나머지 논문은 2번 이하로 인용되었다. (0편)
따라서 H-Index는 2이다.
H-Index는 최댓값이여야 하므로, 논문의 인용 횟수 중 가장 큰 값에서 1씩 빼주면서 조건을 만족하는지 확인해 줄 것이다.
이 때 조건은 주어진 배열의 요소들이 h보다(h-index)
큰 경우의 수가 h번 이상이여야 한다는 점이다.
def solution(citations):
if max(citations) == 0:
return 0
for h in range(max(citations),0,-1):
max_h = 0
for c in citations:
if c >= h:
max_h += 1
if max_h == h:
return max_h
print(solution([2, 18, 22, 23]))