프로그래머스 | H-Index (Java)

mul·2024년 6월 18일
0

알고리즘

목록 보기
59/65
post-custom-banner

🔒문제

프로그래머스 Lv2. 정렬 H-Index

🔑해결

발표한 논문의 인용 횟수를 담은 배열 citations가 매개변수로 주어질 때, H-Index를 return하는 solution함수를 작성하는 문제이다.

H-Index는 h번 이상 인용된 논문이 h편 이상 있을 때, h값의 최댓값이다.

h값으로 올 수 있는 최댓값과 최솟값을 구하고, for 문을 통해 h의 최댓값을 구했다.
오름차순 정렬한 배열의 끝에서부터 h값을 검색하는데, h번 이상 인용된 논문이 h편 이상이어야 하기 때문에, citations[target - h] 값이 h 이상이어야 한다는 것을 조건으로 검색했다.

🔓코드

import java.util.Arrays;
class Solution {
    public int solution(int[] citations) {
        int answer = 0;
        
        Arrays.sort(citations); // 오름차순 정렬
        int max = citations[citations.length-1];
        if (max == 0) { // 인용 수가 모두 0일 경우
            return 0;
        } else if (citations.length < max) { // 논문의 수가 최대 인용 수 보다 작을 경우
            max = citations.length;
        }
        int min = citations[0];
        if (citations.length < min) { // 논문의 수가 최소 인용 수 보다 작을 경우
            min = citations.length;
        }

        for (int i = max; i >= min; i--) {
            int index = citations.length - i; // 논문 수가 i편 이상
            if (citations[index] >= i) { // 인용 수가 i번 이상
                answer = i;
                break;
            }
        }
        
        return answer;
    }
}
post-custom-banner

0개의 댓글