
Problem
https://school.programmers.co.kr/learn/courses/30/parts/12198
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
- H-Index는 과학자의 생산성과 영향력을 나타내는 지표이다.
- 어떤 과학자가 발표한 논문 n편 중, h번 이상 인용된 논문이 h편 이상이고, 나머지 논문이 h번 이하 인용되었다면 h의 최댓값이 H-Index이다.
- 어느 과학자의 H-Index를 나타낸는 값인 h를 구해서 반환해라
- 과학자가 발표한 논문의 인용 횟수를 담은 배열 citations가 매개변수로 주어질 때, 이 과학자의 H-Index를 반환해라
Input / Ouput Example
citations | return |
[3, 0, 6, 1, 5] | 3 |
[10, 8, 5, 4, 3] | 4 |
[6, 2, 9, 7, 1] | 3 |
Solution
문제에서 주어진 H-Index에 대한 설명이 너무 빈약해서 찾아보니
해당 문제의 질문목록에 누가 잘 정리해서 올려주셨길래 가져온다.
(해당 내용의 본문은 References 탭에서 확인 가능)
논문 n편 중, h번 이상 인용된 논문이 h편 이상이고 나머지 논문이 h번 이하 인용되었다면 h의 최댓값
을 좀 더 이해하기 쉽게 바꾸면
논문 n편 중, a번 이상 인용된 논문이 b편 이상이면 a와 b중 작은 값이 H-Index 값이다.
단 하나의 출판물을 가진 저자는 최대 h-Index가 1일 수 있다.(자신의 출판물이 1회 이상 인용된 경우)
반면, 많은 출판물을 가진 저자는 각각 1회만 인용된 경우에도 H-Index가 1일 것이다.
I/O Example의 2번째 예시를 바탕으로
[10, 8, 5, 4, 3] 의 인용횟수를 가진 교수가 있다면
- 10번 이상 인용 횟수를 가진 논문은 1편 -> H-Index = 1
- 8번 이상 인용 횟수를 가진 논문은 2편 -> H-Index = 2
- 5번 이상 인용 횟수를 가진 논문은 3편 -> H-Index = 3
- 4번 이상 인용 횟수를 가진 논문은 4편 -> H-Index = 4
- 3편 이상 인용 횟수를 가진 논문은 5편 -> H-Index = 3
따라 해당 문제의 H-Index는 4가 된다.
count함수는 내림차순으로 정렬된 리스트에서 pivot값 이상인 원소들을 count하는 함수다.
들어온 citations 값을 내림차순으로 정렬한 다음
위에서 정리한 H-Index의 정의를 바탕으로 반복문을 구현하면 된다.
Code
def count(sorted_list, pivot):
count = 0
for i in sorted_list:
if i >= pivot:
count += 1
else:
break
return count
def solution(citations):
answer = 0
citations.sort(reverse=True)
for i in range(len(citations)):
a = citations[i]
b = count(citations, a)
answer = max(answer, min(a, b))
return answer
References
'Coding > PS' 카테고리의 다른 글
프로그래머스 고득점 Kit - 피로도 (0) | 2025.02.23 |
---|---|
프로그래머스 고득점 Kit - 소수 찾기 (1) | 2025.02.03 |
프로그래머스 고득점 Kit - 가장 큰 수 (0) | 2025.02.03 |
프로그래머스 고득점 Kit - 디스크 컨트롤러 (0) | 2025.02.03 |
프로그래머스 고득점 Kit - 이중 우선순위 큐 (0) | 2025.01.29 |
소프트웨어학과 현주씌의 일상을 담는 블로그
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!