[프로그래머스] H-Index

당당·2023년 5월 31일
0

프로그래머스

목록 보기
161/245
post-thumbnail

https://school.programmers.co.kr/learn/courses/30/lessons/42747

📔문제

H-Index는 과학자의 생산성과 영향력을 나타내는 지표입니다. 어느 과학자의 H-Index를 나타내는 값인 h를 구하려고 합니다. 위키백과에 따르면, H-Index는 다음과 같이 구합니다.

어떤 과학자가 발표한 논문 n편 중, h번 이상 인용된 논문이 h편 이상이고 나머지 논문이 h번 이하 인용되었다면 h의 최댓값이 이 과학자의 H-Index입니다.

어떤 과학자가 발표한 논문의 인용 횟수를 담은 배열 citations가 매개변수로 주어질 때, 이 과학자의 H-Index를 return 하도록 solution 함수를 작성해주세요.


🚫제한사항

과학자가 발표한 논문의 수는 1편 이상 1,000편 이하입니다.
논문별 인용 횟수는 0회 이상 10,000회 이하입니다.


📝입출력 예

citationsreturn
[3, 0, 6, 1, 5]3

입출력 예 #1

이 과학자가 발표한 논문의 수는 5편이고, 그중 3편의 논문은 3회 이상 인용되었습니다. 그리고 나머지 2편의 논문은 3회 이하 인용되었기 때문에 이 과학자의 H-Index는 3입니다.


🧮알고리즘 분류

  • 정렬

📃소스 코드

import java.util.Arrays;
class Solution {
    public int solution(int[] citations) {
        int answer = 0;
        Arrays.sort(citations);
        int max=citations[citations.length-1];
        
        for(int i=0;i<=citations[citations.length-1];i--){
            int count=0;
            for(int j=0;j<citations.length;j++){
                if(max<=citations[j]){
                    count++;
                }
            }
            if(count>=max){
                answer=max;
                break;
            }
            max--;
        }
        
        return answer;
    }
}

📰출력 결과


📂고찰

문제를 잘못 이해했었다.

반례 : [1,4,5] -> 2

나는 배열 안의 원소들만 기준인 줄 알았는데, 그것이 아니고 최대값에서 하나씩 줄여나가면 됐다.

만약, 배열 안의 원소들 중 max보다 크거나 같은 것의 수 countmax보다 크거나 같다면, 그것이 h-index이다.

profile
MySQL DBA 신입 지원

0개의 댓글