JAVA/Algorithm

[프로그래머스/java] H-Index (+ 설명)

nang. 2020. 12. 29. 00:35
반응형
SMALL

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

 

코딩테스트 연습 - H-Index

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

programmers.co.kr

 

  • Arrays.sort()
    • 기본 오름차순

 

 

  • h번 이상 인용된 논문이 h편 이상인 h의 최댓값 구하기
    • 즉, citations 배열의 h개의 논문 모두 h 이상이고 나머지는 h 이하인 h의 최대값 구하기
import java.util.*;

class Solution {
    public int solution(int[] citations) {
        int answer = 0;
        
        // 각 논문의 인용 횟수 배열인 citations 정렬 (오름차순)
        Arrays.sort(citations);
        
        for(int i = 0; i < citations.length; i++) {
            int h = citations.length - i;
            
            if(citations[i] >= h) {
                answer = h;
                break;
            }
        }
        
        return answer;
    }
}

 

  • 배열을 먼저 오름차순으로 정렬
  • citations[0] 부터 보자면 citations[0]번 이상 인용된 논문은 citations.length (= h)
    • 제일 작은 숫자니까
  • 배열의 값은 증가해가고 h는 1씩 줄어들면서 배열의 값이 h보다 같거나 커질 때
    • h가 1씩 줄어든다는건 체크해야 할 논문의 남은 개수와 같음
    • 같거나 커졌을 때 어차피 남은 논문들은 모두 h 이상이고 그 전 숫자들은 모두 h 이하이므로
    • 또한, 같거나 커졌을 때의 h가 결국 최대값이므로
  • 이때의 h를 리턴하는 것!
반응형
LIST