https://school.programmers.co.kr/learn/courses/30/lessons/42747

💡 프로그래머스 강의노트 참고 :
https://school.programmers.co.kr/learn/courses/14743/lessons/118838
def solution(citations):
    answer = []
    
    citations.sort(reverse = True)
    
    # hash => 논문의 인용 수를 hash에 저장
    hash = {}
    for i in citations:
        if i not in hash:
            hash[i] = 1
        else:
            hash[i] += 1
    
    # 논문 인용 수가 큰 -> 작은 순서로 정렬하면, 특정 지점의 왼쪽은 모두 그 논문보다 인용 수가 큰 논문이 됨
    hash = sorted(hash.items(), key = lambda x:x[0], reverse = True)
    
    count = 0
    for i in range(len(hash)):
        count += hash[i][-1]
        
        if count == hash[i][0]:     # h의 최댓값을 구해야하므로, 내림차순으로 정렬한 배열의 첫 번째 값부터 인용 수가 해당 값 이상인 논문의 개수를 카운팅
            answer = count
            break
                
    return answer
💡 코드 수정 시 참고하기 :
https://velog.io/@anneisa/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A42%EB%8B%A8%EA%B3%84%EC%A0%95%EB%A0%AC-H-Index