티스토리 뷰


 

더보기
import java.util.*;

class Solution {
    
    // 문제 :
    // + H-Index는 과학자의 생산성과 영향력을 나타내는 지표입니다.
    // + 어느 과학자의 H-Index를 나타내는 값인 h를 구하려고 합니다.
    // + 어떤 과학자가 발표한 논문 n편 중, h번 이상 인용된 논문이 h편 이상이고
    // + 나머지 논문이 h번 이하 인용되었다면 h의 최댓값이 이 과학자의 H-Index입니다.
    
    public int solution(int[] citations) {
        
        // + 예외 케이스 : 논문이 1개인 경우 H-Index는 반드시 1이다.
        if ( citations.length == 1 ){
            return 1;
        } // if
        
        // + H-Index를 구하기 위해서는 먼저 오름차순 정렬을 통해 인용된 횟수를 정리해야 한다.
        // + -> 최댓값을 구하는 것이기 때문에 원소를 천천히 올라가면서 확인해보면 된다.
        Arrays.sort(citations);
        
        // + H-Index를 저장할 변수 answer 생성
        int answer = 0;
        
        for ( int i = 0; i < citations.length; i++ ){
            
            // + 인용된 횟수가 i라고 했을 때, i번 이상 인용된 논문의 수
            // + 오름차순 정렬하였기에, 논문 배열의 길이 - 인덱스 번호가 인용된 논문의 수가 된다.
            int h = citations.length - i;
            
            // + 논문 인용횟수가 h번 이상인 논문이 h개 이상인지 확인
            if ( citations[i] >= h ) {
                answer = h;
                break;
            } // if
            
        } // for
        
        return answer;
        
    } // solution
    
} // end class

 


[ 참고한 블로그 ]

 

https://yubh1017.tistory.com/23

 

[JAVA] 프로그래머스 : H-Index (코딩테스트 고득점 kit > 정렬)

https://programmers.co.kr/learn/courses/30/lessons/42747 코딩테스트 연습 - H-Index H-Index는 과학자의 생산성과 영향력을 나타내는 지표입니다. 어느 과학자의 H-Index를 나타내는 값인 h를 구하려고 합니다. 위키

yubh1017.tistory.com

 

728x90
댓글
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
최근에 올라온 글
Total
Today
Yesterday
공지사항