본문 바로가기

algorithm

H-Index

 

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

 

코딩테스트 연습 - H-Index

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

programmers.co.kr


풀이

import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;

class Solution {
    public int solution(int[] citations) {
        int size = citations.length;
        int max = Collections.max(Arrays.stream(citations).boxed().collect(Collectors.toList()));
        int answer = 0;

        for(int h = max; h >= 0; h--) {
            int quote = 0;
            for(int j : citations) if(j >= h) quote++;
            if(quote >= h && size - quote <= h) {
                answer = h;
                break;
            }
        }

        return answer;
    }
}

1. 입력받은 배열의 size와 max값을 먼저 구한다.

2. max부터 1까지 반복(variable: h)

    3. 논문들 중 h번 이상 인용된 논문들의 개수를 센다.(variable: quote)

    4. quote >= h && size - quote <= h이면

        5. answer에 h를 저장한다.

        6. 반복문을 나간다.

7. answer를 반환한다.

 

조건문같은 경우는 문제에 나온대로 작성해서 설명할 부분이 크게 없는 것 같다.

최대값에서부터 0까지 도는 것은 조건에 맞는 수들 중 최댓값이 H-Index이기때문에 큰 수에서부터 작은 수로 내려오면서 찾는 것이다.

 

'algorithm' 카테고리의 다른 글

백준 1065 - 한수  (0) 2021.09.16
카펫  (0) 2021.04.11
소수 찾기  (0) 2021.04.10
가장 큰 수  (0) 2021.04.07
K번째 수  (0) 2021.04.07