알고리즘 문제/Medium

[Medium] H-지수- 274. H-Index

네야_IT 2024. 8. 16. 03:05
반응형

정수 배열 citations가 주어집니다. 여기서 citations[i]는 연구자가 i번째 논문에 대해 받은 인용 횟수를 나타냅니다. 연구자의 H-지수를 반환하세요.

 

위키백과의 H-지수 정의에 따르면, H-지수는 주어진 연구자가 적어도 H번 이상 인용된 논문이 H편 이상 있는 경우의 최대 값으로 정의됩니다.

예시 1:

입력: citations = [3,0,6,1,5]
출력: 3
설명: [3,0,6,1,5]는 연구자가 총 5편의 논문을 가지고 있으며, 각각 3, 0, 6, 1, 5회 인용되었음을 의미합니다. 연구자는 적어도 3번 이상 인용된 논문이 3편 있으며, 나머지 두 논문은 최대 3회 인용되었습니다. 따라서 H-지수는 3입니다.

예시 2:

입력: citations = [1,3,1]
출력: 1

제한 사항:

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

풀이

class Solution:
    def hIndex(self, citations: List[int]) -> int:
        n = len(citations)
        count = [0] * (n + 1)  # 논문의 수보다 1 큰 배열을 생성

        # 인용 횟수를 카운트
        for c in citations:
            if c >= n:
                count[n] += 1  # 인용 횟수가 논문 수보다 크거나 같은 경우
            else:
                count[c] += 1  # 해당 인용 횟수에 카운트 증가

        total = 0
        for i in range(n, -1, -1):  # 가장 큰 인용 횟수부터 시작하여 누적
            total += count[i]
            if total >= i:
                return i

        return 0
반응형