반응형
정수 배열 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반응형
'알고리즘 문제 > Medium' 카테고리의 다른 글
| 배열의 곱셈 제외하기 - 238. Product of Array Except Self (0) | 2024.08.20 |
|---|---|
| [Medium] 380. Insert Delete GetRandom O(1) (0) | 2024.08.17 |
| [Medium] 점프 게임 II - 45. Jump Game II (0) | 2024.08.16 |
| [Medium] 점프 게임 - 55. Jump Game (0) | 2024.08.15 |
| [Medium] 주식을 팔아 최대 이익을 얻는 날 구하기 2 - 122. Best Time to Buy and Sell Stock II (1) | 2024.08.14 |