[ Programmers 42747 ] H-Index(Python)

uoayop·2021년 5월 12일
0

알고리즘 문제

목록 보기
42/103
post-thumbnail

문제

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]))
profile
slow and steady wins the race 🐢

0개의 댓글