관리 메뉴

NineTwo meet you

[프로그래머스/파이썬/자바] H-Index 본문

프로그래밍 문제/프로그래머스

[프로그래머스/파이썬/자바] H-Index

NineTwo 2020. 8. 4. 21:55
반응형

출처


문제 설명

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회 이하입니다.

입출력 예

citations         return
[3, 0, 6, 1, 5] 3

 

입출력 예 설명

이 과학자가 발표한 논문의 수는 5편이고, 그중 3편의 논문은 3회 이상 인용되었습니다.

그리고 나머지 2편의 논문은 3회 이하 인용되었기 때문에 이 과학자의 H-Index는 3입니다.

※ 공지 - 2019년 2월 28일 테스트 케이스가 추가되었습니다.


풀이

H-Index = max( min(i,f[i])) (i = index, f = citations배열)

H-Index 구하는 법

1. citations을 내림차순으로 정렬

2. 각각의 인덱스와 인덱스에 해당되는 값을 비교해 최소의 값들을 찾기

3. 최소의 값들 중 최대의 값을 찾기(H-Index)

 

다음 예를 살펴보자. (단, 인덱스의 시작은 1부터라고 생각한다.) 

먼저 인덱스 1과 해당 인덱스 값인 6을 비교하면 1이 더 작은 수이므로 선택한다. 

차례로 배열을 끝까지 확인하면 다음과 같이 파란색의 값들이 최소값들을 확인할 수 있다.

마지막으로 파란색값들 중 최대의 값을 선택하면 H-Index를 구할 수 있다.

코드

 

반응형
Comments