JS]プログラマーコードテスト練習|ハッシュ-ベストアルバム
質問リンク:アルバム
1.質問
ストリーミングサイトでは、最も多く再生された曲を2曲集め、ベストアルバムを発売します.曲は唯一の番号で区切られており、収録曲の基準は以下の通りである.
まずはでたくさんの曲が流れたタイプを収録 まずはタイプで放送された曲を収録 タイプで同じ再生回数の曲のうち、まず唯一番号の低い曲を収録する. 曲タイプを表す文字列配列タイプと、曲の再生回数を表す整数配列シナリオを指定する場合は、solution関数を完了し、最適なアルバムを入れる曲の一意の番号を順番に返します.
2.I/O例
3.解答[タイプ、再生数]のタイプ配列. 体裁にforeachを加える.(forEachは各アレイ要素に対して一度に提供できる関数) data table(map)では、タイプがキー値の場合はキー値、ない場合は{total:0,歌曲:[]}の場合は初期値 となる. table.setを使用すると、totalは各タイプの再生数をマージすることができ、曲は再生数とインデックス を含むことができる.曲はプレイ基準で降順に並べてスライス(top 2のみ)
Object.entries()
このオブジェクト.entries()メソッドは、指定したオブジェクトの一意の列文字列キー属性「キー、値」ペアの配列を返します.ループがプロトタイプチェーンであるプロパティもリストされます...ループを使用するのと同じですが、には含まれません.for...in (mdn) の再生数を基準とした昇順(まず総再生数が多いものを収録) Array.prototype.flatMap() ( = flat() + map() )
flatMap()メソッドは、まずマッピング関数を使用して各エンティティをマッピングし、その後、結果を新しい配列に平坦化します.これは深さが1の平面に続く後のマッピングと同じであるが,FlatMapは非常に有用であり,両者を一つの方法に統合するとより効率的である.(mdn) map曲の中でインデックス値のみの配列 を作成する最後の戻り値は で終了する.
1.質問
ストリーミングサイトでは、最も多く再生された曲を2曲集め、ベストアルバムを発売します.曲は唯一の番号で区切られており、収録曲の基準は以下の通りである.
まずは
2.I/O例
3.解答
function solution(genres, plays) {
let table = new Map();
const genre = genres.map((v, i) => [v, plays[i]]);
genre.forEach(([genre, play], index) => {
// table에 장르가 있다면 그걸 가져오고 없으면 초기값
const data = table.get(genre) || { total: 0, songs: [] };
table.set(genre, {
total: data.total + play,
songs: [
...data.songs, // 기존 값을 복사
{
play, // 추가할 오브젝트 : 재생횟수, 인덱스
index,
},
]
.sort((a, b) => b.play - a.play) // play 기준 내림차순으로 정렬
.slice(0, 2), // top 2만 slice
});
});
return [...table.entries()] // [key, value ]
.sort((a, b) => b[1].total - a[1].total) // 총 재생수를 기준으로 내림차
.flatMap((item) => item[1].songs)
.map((song) => song.index);
}
[
[ 'classic', 500 ],
[ 'pop', 600 ],
[ 'classic', 150 ],
[ 'classic', 800 ],
[ 'pop', 2500 ]
]
このオブジェクト.entries()メソッドは、指定したオブジェクトの一意の列文字列キー属性「キー、値」ペアの配列を返します.ループがプロトタイプチェーンであるプロパティもリストされます...ループを使用するのと同じですが、には含まれません.for...in (mdn)
flatMap()メソッドは、まずマッピング関数を使用して各エンティティをマッピングし、その後、結果を新しい配列に平坦化します.これは深さが1の平面に続く後のマッピングと同じであるが,FlatMapは非常に有用であり,両者を一つの方法に統合するとより効率的である.(mdn)
[
{ play: 2500, index: 4 },
{ play: 600, index: 1 },
{ play: 800, index: 3 },
{ play: 500, index: 0 }
]
Reference
この問題について(JS]プログラマーコードテスト練習|ハッシュ-ベストアルバム), 我々は、より多くの情報をここで見つけました https://velog.io/@zaman17/JS-프로그래머스-코딩테스트-연습-해시-베스트-앨범テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol