Posts H-Index [Python]
Post
Cancel

H-Index [Python]

URL https://programmers.co.kr/learn/courses/30/lessons/42747#

문제설명

  • H-Index는 과학자의 생산성과 영향력을 나타내는 지표입니다. 어느 과학자의 H-Index를 나타내는 값인 h를 구하려고 합니다. 위키백과1에 따르면, H-Index는 다음과 같이 구합니다.
  • 어떤 과학자가 발표한 논문 n편 중, h번 이상 인용된 논문이 h편 이상이고 나머지 논문이 h번 이하 인용되었다면 h의 최댓값이 이 과학자의 H-Index입니다.
  • 어떤 과학자가 발표한 논문의 인용 횟수를 담은 배열 citations가 매개변수로 주어질 때, 이 과학자의 H-Index를 return 하도록 solution 함수를 작성해주세요.

제한사항

  • 과학자가 발표한 논문의 수는 1편 이상 1,000편 이하입니다.
  • 논문별 인용 횟수는 0회 이상 10,000회 이하입니다.

문제풀이

  • 일단 H-Index의 이해가 필요함
  • 주어진 배열 citations = [3, 0, 6, 1, 5]는 각 논문에 인용된 h값임, 그리고 citations의 갯수가 논문의 갯수임
  • 전체 논문중 많이 인용된 순으로 정렬 후 논문의 수가 인용된수 보다 크거나 같아지면 해당 논문의 숫자가 H-index임 아래의 표에서는 10번째 논문의 수가 H-Index로 답은 10임
인용수논문수
351
342
323
284
225
216
127
138
119
1010
711
  • 위의 내용을 정리하자면 인용된 수를 큰 수부터 sorting한 뒤 논문의 갯수를 세다가, 논문의 수가 인용의 수보다 크거나 같아지는 논문 수를 찾으면 됨
  • citations의 배열안에 있는 수를 리턴하는 것이 아님.
  • 마지막에 [2, 2] 와 같은 예외는 해당 논문의 수를 리턴하게 하면 됩니다.

H-Index 추가 설명

  • https://www.ibric.org/myboard/read.php?Board=news&id=270333
  • https://m.blog.naver.com/PostView.nhn?blogId=promarketyj&logNo=221434899288&categoryNo=22&proxyReferer=https:%2F%2Fwww.google.com%2F
1
2
3
4
5
6
7
8
9
10
11
12
13
def solution(citations):
    citations.sort(reverse = True)
    
    flag = False
    
    for i in range(0,len(citations)):

        if i >= citations[i]:
            flag = True
            return i
        
    if flag == False:
        return len(citations)
1
2
citations = [3, 0, 6, 1, 5]
solution(citations)
1
3
1
2
citations = [47, 8, 10, 10, 15, 17, 22, 24, 28, 32, 42, 11]
solution(citations)
1
10
1
2
citations = [1, 7, 0, 6, 4, 1]
solution(citations)
1
3
1
2
citations = [2, 2]
solution(citations)
1
2
1
This post is licensed under CC BY 4.0 by the author.