hyunkookim 2024. 11. 26. 17:33

274. H-Index

 

 

결론

조건 **"인용 횟수 ≥ 논문 순위"**는 H-Index의 정의에서 나옵니다:

  1. i+1번째 논문까지는 최소 i+1번 이상 인용되었는지 확인.
  2. 이 조건을 만족할 때, 해당 논문 수(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의 의미

  1. i는 0-based index입니다.
  2. i+1은 논문의 순서, 즉 1-based index로, 현재까지 확인한 논문의 개수를 의미합니다.

H-Index의 조건 다시 확인

  • 조건: 인용 횟수 ≥ 논문 순서 (i+1).
  • 코드는 citations[i] < i + 1일 때 중단하며, 이 시점의 i는 조건을 만족하지 않는 첫 번째 논문의 인덱스입니다.
  • 따라서, 조건이 깨지기 직전까지의 논문 개수인 i가 올바른 H-Index가 됩니다.

 

결론

  • H-Index는 i를 반환해야 올바른 값을 계산합니다.
  • 조건이 깨지는 첫 번째 인덱스(i)를 확인하고, i가 곧 만족하는 최대 H-Index임을 기억하세요.