문제 링크 : https://programmers.co.kr/learn/courses/30/lessons/42747
코딩테스트 연습 - H-Index
H-Index는 과학자의 생산성과 영향력을 나타내는 지표입니다. 어느 과학자의 H-Index를 나타내는 값인 h를 구하려고 합니다. 위키백과1에 따르면, H-Index는 다음과 같이 구합니다. 어떤 과학자가 발표
programmers.co.kr
문제에 따르면 논문 n편 중, h번 이상 인용된 논문이 h편 이상이고, 나머지 논문이 h번 이하 인용되었다면 h의 최댓값을 H-Index라고 한다.
예를들어 인용수가 [3, 0, 6, 1, 5]라고 하면, H-index는 3이 된다.
H-Index를 구하기 위해 정렬을 먼저 하면 [0, 1, 3, 5, 6]가 되는데 3까지는 h번 이상 인용된 논문의 수가 h이상이고 5부터는 h번 이상 인용된 논문의 수가 h보다 작게된다.
이렇게 h번 이상 인용된 논문의 수가 h보다 작게되는 원소를 찾으면 최종 H-Index의 범위는 (이전 원소 값) ~ (현재 원소 값)사이에 위치하게 된다. 따라서 (현재 원소 값)부터 (이전 원소 값)에 대하여 for문을 돌고, h번 이상 인용된 논문의 수가 $h이상이 되는 값이 나오면 그 값이 바로 H-Index가 된다.
def solution(citations): # len(citations) : 1 <= n <= 1000 answer = 0 citations.sort() # O(nlogn) max_h = -1 for i in range(len(citations)): h = citations[i] n_h_over = len(citations) - i if n_h_over >= h: max_h = h else: for h in range(citations[i], max_h-1, -1): if n_h_over >= h: max_h = h return max_h return max_h
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] K번째 수 (0) | 2021.06.21 |
---|---|
[프로그래머스] 이중우선순위큐 (0) | 2021.06.20 |
[프로그래머스] 더 맵게 (0) | 2021.04.16 |
[프로그래머스] 기능개발 (0) | 2021.04.14 |
[프로그래머스] 주식가격 (0) | 2021.04.12 |