jamong5 2023. 1. 26. 17:26

풀이 1) 오름차순 정렬

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

 

 

1 2 3 7 8 9 10

1번 이상 -> 7개

2번 이상 -> 6개

3번 이상 -> 5개

(4번 이상 -> 4개)

(5번 이상 -> 4개)

7번 이상 -> 4개

이때 h index 는 볼드친 4개가 된다.

if 문에 안들어가는 경우는 citations 배열이 0 으로만 구성되는 경우다. -> return 0

풀이 2) 내림차순 정렬

def solution(citations):
    citations.sort(reverse = True)
    for i in range(len(citations)) :
        if citations[i] < (i+1) : return i
    return len(citations)

10 9 8 7 3 2 1

10번 이상 -> 1개

9번 이상 -> 2개

8번 이상 -> 3개

7번 이상 -> 4개

3번 이상 -> 5개

if 문에 들어가지 않는 경우는 모든 인용 횟수가 논문 총개수보다 크거나 같은 경우다. -> return 총개수

풀이 3) 내림차순

모든 h 가능 값을 구한 후 최대값을 뽑는 코드

def solution(citations):
    citations.sort(reverse=True)
    answer = max(map(min, enumerate(citations, start=1)))
    return answer