프로그래머 H-Index Python 정답(정렬)

프로그래머 H-Index Python 정답(정렬)

문제 연결

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

프로그램 제작자

코드 중심 개발자를 고용하십시오. 배치 기반 위치 매칭. 프로그래머의 개발자별 프로필에 가입하고 기술 호환성이 좋은 회사와 연결하십시오.

Programmer.co.kr

문제 답

I/O 예시

인용 부호 돌려 주다
(3, 0, 6, 1, 5)

올바른 응답 코드

def solution(citations):    
    return len(list(filter(lambda x : x(0) <= x(1),enumerate(sorted(citations,reverse=True),start=1))))

문제

n개의 논문 중 h개 이상의 논문이 h번 이상 인용되고 나머지 논문이 h개 이하로 인용된 경우 h의 최대값이 h-index입니다.

다음 논리를 이해하고 정의에 맞는지 확인하십시오.

  1. 먼저 인용은 내림차순으로 정렬됩니다.
  2. 정렬 후 위의 코드와 같이 enumerate를 사용하면 인용 횟수가 가장 많은 a를 (1,a) 타입의 튜플로 묶습니다.
  3. 1 <= a인지 테스트합니다. 즉, a가 두 번 이상 인용되었는지 확인합니다.
    • a는 내림차순이기 때문에 두 번 이상 인용되었으므로 한 번 이상 인용된 저작물이 여러 개(a 미만) 있습니다.
    • 나머지는 한 조각 미만일 수 있습니다. (뒤를 돌아봐야 합니다.)
  4. 그런 다음 2 <= b인지 테스트합니다.
    • 내림차순이므로 b가 1회 이상 인용되면 a도 2회 이상 인용되므로 2회 이상 인용된 논문이 2편 이상이다.
    • 나머지는 2 이하일 수 있습니다. (뒤를 돌아봐야 합니다.)
  5. 3번과 4번과 같은 논리를 반복하면서 불가능한 요소가 발생하면 이전 요소의 i-value가 h-index가 된다.
  6. 3과 4로 필터링한 후 남은 요소의 수(즉, index)는 h-index를 의미합니다.