발표한 논문 n 편 중에 h번 이상 인용된 논문이 h편 이상이고 나머지 논문이 h번 이하 인용되었다면 h의 최댓값이 이 과학자의 h-index이다. h-index 값을 return
def solution(citations):
answer = 0
h_index = sum(citations) // len(citations)
count = 0
while count < h_index:
for i in range(len(citations)):
if citations[i] >= h_index:
# 해당 인덱스의 논문 인용횟수가 h_index 보다 크다면,
count +=1
if count >= h_index:
# h_index 이상 인용된 논문의 개수가 h_index 이상일 때,
answer = h_index
else:
# 아니라면, h_index 1만큼 감소 / count 초기화
# 1만큼 감소하는 이유 = h번 이상 인용된 논문의 개수가 h_index 미만이라는 뜻
if h_index < 0:
h_index = 0
h_index -=1
count = 0
return answer
📌 고려해야할 점
def solution(citations):
answer = 0
citations.sort(reverse=True)
for i in range(len(citations)): # H_index가 존재하고 H_index를 넘는 논문이 몇 개인지 구할때
if(citations[i] < i+1):
return i
return len(citations) # 인용 횟수가 모두 같을때는 전체를 return
H-index에대한 이해를 한다면 충분히 나올 수 있는 풀이라고 생각한다.
<1> 내림차순으로 정렬
<2> 인용횟수가 인덱스+1을 넘어가는 경우가 오면 해당 인덱스 return
<3> 인용횟수가 모두 같으면 전체 길이를 return
더 자세한 설명은 아래 링크에 더 잘 설명되어있다!
바로 가기