프로그래머스[Level 2] H-Index

bkboy·2022년 5월 20일
0

문제

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

입출력 예

풀이

function solution(citations) {
    let hIndex = 0;
    citations.sort((a,b)=>(b-a))
    
    while(hIndex + 1 <= citations[hIndex]){
        hIndex++;
    }
    return hIndex
}

h 지수라고도 한다. 사전에 나와있는 내용을 적어보면, h지수는 특정 연구원의 연구 성과를 평가하기 위한 지표로써, 발표한 논문수와 피인용수를 이용하여 학문적 역량을 측정한다.

연구원이 발표한 논문들을 많이 인용된 순으로 정렬한 후, 피인용수가 논문수와 같아지거나 피인용수가 논문수보다 작아지기 시작하는 숫자가 된다.

해당 내용에 맞게 문제에 나온 예를 풀어보겠다.

이 예제에서 연구원은 5개의 논문을 발표했다. 피인용수를 내림차순으로 정렬한다.
6, 5, 3, 1, 0

6번 인용된 것이 1편, 5번 인용된 것이 1편
3번 인용된 것이 1편, 1번 인용된 것이 1편
0번 인용된 것이 1편인 것이다.

피인용수 6 5 3 1 0

h지수 1 2 3 4 5

순차적으로 비교해나갔을 때 같아 지는 수 3이 h지수가 된다.

이는, 5편중 3번이상 인용된 수가 3개이기 때문에 맞는 정답이 된다.

profile
음악하는 개발자

0개의 댓글