코딩테스트/프로그래머스

[프로그래머스][정렬] H-Index

박소민 2025. 6. 9. 11:50
H-Index
 

프로그래머스

SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

  • 내 풀이
    • citations를 정렬한 후, 이진 탐색으로 가능한 H-Index 후보를 탐색
    • bisect_left(citations, mid)는 mid 이상 인용된 논문 개수를 빠르게 계산하기 위해 사용
    • 조건 n - idx >= mid를 만족하면 가능한 H-Index 후보로 저장하고 범위를 오른쪽으로 확장
      • n-idx : mid값보다 큰 수의 갯수
    • 최댓값을 찾기 위해 answer = max(answer, mid)로 갱신
from bisect import bisect_left
def solution(citations):
    answer = 0
    citations.sort()
    n=len(citations)
    l,r=0,10000
    while l<=r:
        mid=(l+r)//2
        idx=bisect_left(citations,mid)
        if n-idx>=mid:
            l=mid+1
            answer=max(answer,mid)   
        else:
            r=mid-1 
        
    return answer