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

 

코딩테스트 연습 - H-Index

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

programmers.co.kr

 

정렬 카테고리, Level 2 문제이며 정렬 문제 중엔 생각보다 풀만했던 문제였다.

문제가 처음엔 이해가 잘 안될 수 있는데, n 편의 논문 중 h 번 이상 인용된 논문이 h 개 이상인 경우, h의 최대값을 구하는 문제이다.

논문 개수가 최대 1000개인점을 감안하여, for loop 를 시작할 때 1000부터 0이 될때까지 줄이는 방식으로 하되 조건을 처음 만족하는 값을 발견할 경우 리턴하는 방식으로 구현하였다.

 

import java.util.*;
import java.util.stream.Collectors;
class Solution {
    public static int solution(int[] citations) {
        int answer = 0;
        long max = 0;
        List<Integer> list = Arrays.stream(citations).boxed()
                .sorted(Comparator.reverseOrder())
                .collect(Collectors.toList());
        for (int i = 1000; i > 0; i--) {
            final int h = i;
            long count = list.stream().filter(elem -> elem >= h).count();
            if (count >= h) {
                max = h > max ? h : max;
                break;
            }
        }
        return (int) max;
    }
}

+ Recent posts