[Python3]프로그래머스_H-Index

문제출처: https://programmers.co.kr/learn/courses/30/lessons/42747#

접근법

H-Index 문제는 백준에서 풀어봤던 문제였다.
근데 정리를 하지 않고 넘어갔더니 이번에도 같은 실수를 했다.
문제는 매우 간단하다. h번 인용한 논문이 h편이상 있으면 나머지는 h번 이하로 인용되어야 한다.

  1. 일단 보자마자 내림차순으로 정렬을 했다.
  • 내림차순 정렬을 통해 높은 숫자로 인용된 논문들부터 차례대로 확인하여 몇편까지 확인했는지 쉽게 볼 수 있고 나머지 논문들은 그 논문의 인용된 횟수보다 같거나 낮기 때문이다.
  1. 첫 index부터 확인하여 현재 h는 citations[index] 이고 이는 현재 index+1편이 있음을 알 수 있다. 그러므로 처음으로 citations[index] <= index+1 이 되는 citations[index]가 정답!
  • 만약 논문이 [10,7,6,5,1,1,1,1] 순으로 인용되었다면 내 논리대로라면 5번이상 인용한 논문은 4편이상이라고만 생각하기 때문에 h-index라고 생각하지 않지만 이는 5번이상 인용된 논문은 4번이상 인용되었다고 할 수 있기 때문에 h-index는 4가 된다. 그러므로 index+1 <= citations[index] 일때 index+1도 정답이 될 수 있다.

코드

def solution(citations):
    answer = 0
    citations.sort(reverse=True)
    for i in range(len(citations)):
        if( citations[i] <= i+1 ):
            answer = max(answer,citations[i])
            break
        if( citations[i] >= i+1 ):
            answer = max(answer,i+1)
    return answer

좋은 웹페이지 즐겨찾기