プログラマソートレベル3:H-Indexアルゴリズムプール
1.問題の説明
H-Indexは科学者の生産力と影響力を測定する指標である.ある科学者のh-indexを表すh値を求めたいです.ウィキペディア1によると、H-Indexの計算は以下の通り.
ある科学者が発表したn編の論文の中で、h編以上の論文を引用し、残りの論文がh次以下に引用された場合、hの最高価格はこの科学者のh-indexである.
ある科学者が論文を発表する引用回数の配列参照をパラメータとして与えた場合,その科学者のH−Indexを返すために解関数を記述してください.
せいげんじょうけん
科学者が発表した論文の数は1編以上1000編以下である.
論文引用回数は0回以上10000回以下である.
I/O例
citationsreturn[3, 0, 6, 1, 5]3
I/O例説明
この科学者が発表した論文は5編あり、そのうち3編は3回以上引用された.また、残りの2つの論文は3回以下引用されたので、この科学者のh-indexは3である.
2.問題を理解する
与えられた参照リストの要素について、n個以上の値の最大値を求める.
参照リストの値のみが適用されないことに注意してください.
つまり、=[0,3,4]を参照すると、結果値は2になる可能性があります.
この質問を調べたところ、ほとんどの人がそれを理解していないため、思考範囲が狭く、答えが得られないことがわかりました.
3.問題を解く
並べ替えリスト
citations.sort()
sort関数を用いて元の参照値[3,0,6,1,5]を[0,1,3,5,6]に並べ替えた.
リスト内の特定の要素の値より大きい値
for i in range(citations[-1]):
if i == sum(i <= x for x in citations):
answer = i
return answer
if i <= sum(i <= x for x in citations):
answer = i
for i in range(citations[-1]):
if i == sum(i <= x for x in citations):
answer = i
return answer
if i <= sum(i <= x for x in citations):
answer = i
そこで、上記のようにif文を作成し、iの値を答えに入れました.
これにより、リスト要素にH-Index値がない場合でも、H-Index値を検索できます.
※最初のifゲートを外し、上のifゲートのみを使うと結果は同じですが、h-index値を見つけたときにforゲートをすぐに閉じないと時間の複雑さにも問題があるので、最初のifゲートを使うのがおすすめです.
最初のif文が存在する場合
最初のif文は存在しません
最後に、リストが[0,0,0]の場合、for文ではH-Index値が見つからないため、答え値を0に初期化する必要があります.
4. solution
def solution(citations):
answer = 0
citations.sort()
for i in range(citations[-1]):
if i == sum(i <= x for x in citations):
answer = i
return answer
if i <= sum(i <= x for x in citations):
answer = i
return answer
Reference
この問題について(プログラマソートレベル3:H-Indexアルゴリズムプール), 我々は、より多くの情報をここで見つけました https://velog.io/@jinyeong-afk/프로그래머스-정렬-Level-3-H-Index-알고리즘-풀이テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol