Python/알고리즘

정렬 Level 2 H-Index - python (프로그래머스)

구름용 2023. 6. 23. 16:40

소스 코드

def solution(citations):
    
    citations = sorted(citations)
    answer = 0
    
    for index, citation in enumerate(citations):
        if len(citations) - index <= citation:
            answer += 1
    
    
    return answer

 

풀이

처음에는 문제 조차 이해하지 못하였지만 될때까지 파다보니 실마리를 찾았다. 문제 설명에서 H-Index에 대한 정의가 나와 있는데 나머지 논문이 몇번 인용 되었는지는 상관없이 결국에는 "h번 이상 인용된 논문이 h번 이상이다" 이 부분에만 집중하면 된거였다.

 

len(citations) - index <= citation 이 부분을 보자

len(citations) - index란 citations 배열을 정렬 하였으므로 index는 해당 논문의 인용 횟수가 몇번째 인지를 의미한고 len(citations) - index란 현재 citation보다 큰 논문들이 몇개 있는지를 의미한다. 따라서 len(citations) - index 보다 citation의 크기가 같거나 크다 것이 H-Index를 만족하는 상황이라는 것이다. 따라서 citations 배열을 쭉 순회하면 해당 조건에 만족하는 논문을 찾은 다음 answer 값을 1 증가시키면 해당 값이 H-Index가 된다.