H-Index

Kylie·2023년 8월 2일

프로그래머스 Lv.2

목록 보기
2/3

내 코드

def solution(citations):
    # n = len(citations), h < n
    # sort (6, 5, 3, 1, 0)  (10, 8, 5, 4, 3) (7, 5, 5, 2, 1, 1)
    # (2, 2, 6, 10, 11) (3, 4, 5, 7,8)
    n = len(citations)
    citations.sort()
'''
    for i, v in enumerate(citations):
        if v >= n - i:
            return n - i
    return 0

다른 풀이

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

sort로 정렬해서 가장 큰값부터 작은값으로 정렬
enumerate로 (index, value) 형태로 묶는다

그리고 최댓값(start = 1)부터 각 value에 대해 최솟값 value의 값을 min으로 추출하고, 이 추출된 값은 enumerate가 끝나는 citations 리스트의 크기에 해당하는 갯수가 나온다. 이들을 map으로 묶으면, 한 value의 입장에서 보는 최솟값 value의 집합이 나온다. 즉 h값들의 집합이나온다. h값중 최대값을 max로 뽑아서 출력하면 된다.

??????????

1) min(index,value) 부분은 가능할 수 있는 모든 h-index를 추출하는 부분 2) max(~) 값은 가능할 수 있는 모든 h-index 중 가장 큰 값을 추출하는 부분으로 생각하시면 됩니다. 예를들어 [6, 5, 4, 1, 0]의 경우에선 min~ 부분은 min(1, 6), min(2, 5), min(3, 4), min(4, 1), min(5, 0), 즉 해당 인용수 이상의 논문개수와 해당 논문의 인용수 중 더 작은 숫자를 고르는 작업을 하고(h-index로 가능한 숫자 추출), max~부분은 앞에서 골라진 (1, 2, 3, 1, 0) 중 가장 큰 숫자를 뽑아 실제 h-index를 구하는 방법입니다.

profile
딥린이

0개의 댓글