⚡️algorithm

[정렬] 프로그래머스 lv2. h-index

남남이루 2022. 5. 24. 12:41

문제

어떤 과학자가 발표한 논문 n편 중, h번 이상 인용된 논문이 h편 이상이고 나머지 논문이 h번 이하 인용되었다면 h의 최댓값이 이 과학자의 H-Index입니다.
어떤 과학자가 발표한 논문의 인용 횟수를 담은 배열 citations가 매개변수로 주어질 때, 이 과학자의 H-Index를 return 하도록 solution 함수를 작성해주세요.

시간 초과를 주의해야 한다.

내 코드

import heapq as hq
def solution(article):
    answer = 0
    hq._heapify_max(article)   # 내림차순 정렬
    h = 0
    for h in range(article[0]):    # 가장 큰 값 기준으로 반복문 돌기
        cnt = 0
        for i in article:
            if i >= h:
                cnt+=1
        if cnt >= h :
            answer = max(answer, h)

    return answer

다른 분 코드

def solution(citations):
    citations.sort()
    for i in range(len(citations)):
        if(citations[i]>=len(citations)-i):
            return (len(citations)-i)

반복문을 다 돌지 않고, h-index를 직접적으로 구해서 비교하지 않고,

citations의 길이에서 i를 뺀것과 citations[i]값을 비교

똑똑하네...