728x90
(Lv.2) H-index
문제 🌐
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회 이하입니다.
입력
[3, 0, 6, 1, 5]
출력
3
이 과학자가 발표한 논문의 수는 5편이고, 그중 3편의 논문은 3회 이상 인용되었습니다. 그리고 나머지 2편의 논문은 3회 이하 인용되었기 때문에 이 과학자의 H-Index는 3입니다.
접근 방법
n개의 논문 중 h개의 논문이 h번 이상 인용되어야 하고, h의 최대값을 찾아야 하므로 가장 먼저 citations를 내림차순으로 정렬했다.
예시 입력의 경우를 살펴보자!
for i in range(n) : 0~n-1 범위 내에서 i 반복
citation[i]와 i+1을 비교하며 조건을 만족하지 않는 최초의 i를 찾아낸다.
i+1 은 문제에서 h를 의미하고, h개의 논문의 인용 횟수가 h보다 작아지면 반복문을 빠져나오는 방식으로 코드를 짰다. h번 이상 인용된 논문의 개수가 h보다 많거나 같을 경우, answer를 1씩 올려 주었다.
Full Solution
def solution(citations):
answer = 0
citations.sort(reverse = True)
n = len(citations)
for i in range(n):
if citations[i] < i+1:
#인용 수 순으로 나열했을 때 (i+1)번째 논문의 인용 수가 (i+1)보다 작을 경우 끝
break
answer+=1
return answer
728x90
'알고리즘 문제 > 프로그래머스' 카테고리의 다른 글
(프로그래머스 Lv.2) 전력망을 둘로 나누기 (python) (0) | 2023.05.22 |
---|---|
(프로그래머스 Lv.1) 모의고사 (python) (0) | 2023.05.22 |
(프로그래머스 Lv.2) 더 맵게 (python) (0) | 2023.05.17 |
(프로그래머스 Lv.1) 같은 숫자는 싫어 (python) (0) | 2023.05.15 |
(프로그래머스 Lv.1) 폰켓몬 (python) (0) | 2023.05.11 |