LeetCode/Top Interview 150
274. H-Index
hyunkookim
2024. 11. 26. 17:33
결론
조건 **"인용 횟수 ≥ 논문 순위"**는 H-Index의 정의에서 나옵니다:
- i+1번째 논문까지는 최소 i+1번 이상 인용되었는지 확인.
- 이 조건을 만족할 때, 해당 논문 수(i+1)가 H-Index가 됩니다.
이 조건이 깨지는 순간부터는 인용 횟수가 부족하므로 H-Index로 고려할 수 없습니다.
class Solution:
def hIndex(self, citations: List[int]) -> int:
#citations[i] >= i+1
citations.sort(reverse=True)
h_score = 0
for i in range(len(citations)):
if citations[i] >= i+1:
h_score = i+1
return h_score
GPT 코드
class Solution:
def hIndex(self, citations: List[int]) -> int:
# 인용 횟수를 내림차순으로 정렬
citations.sort(reverse=True)
# 순회하며 H-Index 조건 확인
for i in range(len(citations)):
if citations[i] < i + 1: # 인용 횟수가 논문 순서보다 작아질 때 중단
return i
return len(citations) # 모든 논문이 조건을 만족하는 경우
return i+1 이 맞는거 아님?
아닙니다. return i가 맞습니다. 이유를 단계적으로 설명하겠습니다.
i와 i+1의 의미
- i는 0-based index입니다.
- i+1은 논문의 순서, 즉 1-based index로, 현재까지 확인한 논문의 개수를 의미합니다.
H-Index의 조건 다시 확인
- 조건: 인용 횟수 ≥ 논문 순서 (i+1).
- 코드는 citations[i] < i + 1일 때 중단하며, 이 시점의 i는 조건을 만족하지 않는 첫 번째 논문의 인덱스입니다.
- 따라서, 조건이 깨지기 직전까지의 논문 개수인 i가 올바른 H-Index가 됩니다.
결론
- H-Index는 i를 반환해야 올바른 값을 계산합니다.
- 조건이 깨지는 첫 번째 인덱스(i)를 확인하고, i가 곧 만족하는 최대 H-Index임을 기억하세요.