[プログラマー]-H-Index/Python/ソート


H-Index
問題の説明
H-Indexは科学者の生産力と影響力を測定する指標である.ある科学者のh-indexを表すh値を求めたいです.ウィキペディア1によると、H-Indexの計算は以下の通り.
ある科学者が発表した論文n編のうち、h回以上引用された論文がh編を超え、残りの論文がh回未満引用された場合、hの最高価格はこの科学者のH-Indexである.
ある科学者が論文を発表する引用回数の配列参照をパラメータとして与えた場合,その科学者のH−Indexを返すために解関数を記述してください.
せいげんじょうけん
  • 科学者が発表した論文の数は1編以上1000編以下である.
  • 論文の引用回数は0回以上10000回以下である.
  • 解答方法
    例えば、入力参照が[3, 0, 6, 1, 5]として指定される場合.
    引用された要素(引用回数)は大から降順に[6, 5, 3, 1, 0],このときiの1番目の要素がhであれば,h回以上引用された論文はi+1編である.
    H-Indexの定義をもう一度見ると,h回以上引用した論文がh編以上であり,残りの論文がh回以下引用した場合はhの最値を意味する.
    すなわち,hとh回以上引用した論文数(i+1)では,h−indexの値がこの2つの値の中で最小となる.そして、これらの値の中で最も価値があるのはH-Indexです.
    def solution(citations):
        citations.sort(reverse=True) # 인용 횟수가 높은 것부터 내림차순 정렬
        # i번째 원소가 h라면, h번 이상 인용된 논문은 i+1편
        # enumerate에 start=1을 주어 1부터 인덱스를 세게 하자
        answer = max(map(min, enumerate(citations, start=1)))
        return answer