プログラマー-H-Index
2235 ワード
1.質問
質問リンク
2.解答
まず、
H-Index
の定義を見てみましょう.n
件の論文のうち、h
件以上の論文をh
件以上引用し、残りの論文をh
件以下引用した場合、h
件の最大値となります.もしそうであれば、
citations
アレイを降順に配列する場合特定の値
H-index
左の要素はh
以上です.右側の要素は
h
以下である可能性があります.例えば、論文が次のようになった場合
[8, 7, 7, 6, 6, 1] - 논문들
[0 1 2 3 4 5] - 논문의 인덱스
H-index
人5
番index左の要素
[8, 7, 7, 6, 6]
は、5
以上である.右側の要素
[1]
は、5
以下である.では、正解
H-index
を得る方法は上で見つけたルールを満たします.
左の要素数が
h
より大きい点を見つけます.[8, 7, 7, 6, 6, 1] - 논문들
[0 1 2 3 4 5] - 논문의 인덱스
インデックスが0の場合,8回以上引用した論文数は1編で(8 < 1) == false
を超える.インデックスが1の場合,7回以上引用した論文数は2件で
(7 < 2) == false
を超える....
インデックスが4の場合,引用回数が6回を超える論文は5編,
(6 < 5) == false
編を超える.索引が5時-1回以上引用された論文の数は6編,正解は
(1 < 6) == true
コードで実現します.5
このように表現することができます降順
このような例があればどうなりますか?
const hIndex = citations.sort((a, b) => b - a).findIndex((v, i) => v < i + 1);
最後のインデックスから開始[5, 5, 5, 5]
なので、5(인용 횟수) < 4(마지막 인덱스 + 1) == false
に戻るのは間違いの答えです.もちろん、常識的には
-1
は제일 적은 인용 횟수 5
より小さい.このとき
n(논문의 개수)
が正解です常識的に見ると,
n(논문의 개수)
については,すべての論文が4(논문의 개수)
回以上引用されている.残りの
4
回以下に引用された論文は4
編である.残りの
0
編の論文については,0
回以下に引用されたかどうかを確認する必要はないからである.つまり、
4
回以上引用した論文がh
編以上あることが重要な条件なのでしょうか..3.完全なコード
function solution(citations) {
const hIndex = citations.sort((a, b) => b - a).findIndex((v, i) => v < i + 1);
return hIndex == -1 ? citations.length : hIndex;
}
Reference
この問題について(プログラマー-H-Index), 我々は、より多くの情報をここで見つけました https://velog.io/@front/프로그래머스-H-Indexテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol