곽로그

[프로그래머스 level2] H-Index 본문

알고리즘/프로그래머스

[프로그래머스 level2] H-Index

일도이동 2020. 8. 25. 13:45
반응형

문제

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

 

코딩테스트 연습 - H-Index

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

programmers.co.kr

 

문제 풀이

 문제에서 빠트리기 쉬운조건이 "h번 이상 인용된 논문이 h편 이상" 이라는 조건이다. 이 조건만 빠트리지 않고 풀면 쉽게 풀수 있다. h를 0부터 인용된논문의 최대수까지 순회하면서 h번 이상 인용된 논문의 count를 구하고, 이 count가 h보다 크면 hArray에 추가를 한다. 

import java.util.ArrayList;
import java.util.Arrays;
class Solution {
  public int solution(int[] citations) {
    int answer = 0;
    int hBound ;
    
    ArrayList<Integer> hArray = new ArrayList<>();
    Arrays.sort(citations);
    hBound = citations[citations.length-1];

    for(int h =0; h<=hBound ; h++){
      int paperCount =0;
      int index;

      for(index=0;index<citations.length;index++){
        if(citations[index]>=h){
          break;
        }
      }

      paperCount = citations.length-index;
      if(paperCount>=h){
        hArray.add(h);
      }
      else{
        break;
      }
    }

    answer = hArray.get(hArray.size()-1);
    return answer;
  }
}
반응형
Comments