주제

H-Index

문제

https://leetcode.com/problems/h-index/description/

problem

연구자의 H-Index를 반환하라

  • H-Index

h 개의 논문이 각각 최소 h개의 인용을 갖는 가장 큰 숫자 h라고 한다.

예를 들어 [1, 3, 1]의 배열의 H-Index는 1이다.

아래는 chatgpt에게 물어본 H-Index의 조건이다

[1, 3, 1] 배열을 내림차순으로 정렬한다.

논문순서 인용횟수 조건 결과
1 3 1 <= 3 ok
2 1 2 <= 1 fail
3 1 3 <= 1 fail

입출력 예시

예시 1

입력: 인용 = [3,0,6,1,5]
출력: 3
설명: [3,0,6,1,5]는 연구자가 총 5편의 논문을 가지고 있고 각각 3, 0, 6, 1, 5회의 인용을 받았다는 것을 의미합니다. 
연구자는 각각 3회 이상 인용된 논문이 3편 있고 나머지 2편은 각각 3회 이하 인용되었으므로 h-인덱스는 3입니다.

예시 2

입력: 인용 = [1,3,1]
출력: 1

조건

  • n == citations.length
  • 1 <= n <= 5000
  • 0 <= citations[i] <= 1000

문제풀이

  1. 배열을 정렬 후 뒤집는다. (내림차순으로 정렬)
  2. 반복문을 돌며 배열의 요소가 (인덱스 + 1) 보다 크다면 변수에 + 1을 한다.
  3. 반복문을 통해 누적된 변수를 리턴한다.
class Solution {
    public int hIndex(int[] citations) {
        int result = 0;
        Arrays.sort(citations);
        reverse(citations, 0, citations.length - 1);
    
        for (int i = 0; i < citations.length; i++) {
            if (citations[i] >= i + 1) {
                result++;
            }
        }
        return result;
    }

    public void reverse(int[] citations, int start, int end) {
        while (start < end) {
            int temp = citations[start];
            citations[start] = citations[end];
            citations[end] = temp;

            start++;
            end--;
        }
    }
}

태그:

카테고리:

업데이트:

댓글남기기