プログラマーコード問題2020年/11/05-Lv.2プリンタ
[質問]
一般的なプリンタでは、必要な印刷順に印刷されます.したがって、重要なドキュメントは後で印刷される可能性があります.この問題を解決するために,重要文書を先に印刷するプリンタを開発した.この新しく開発されたプリンタは、次のように印刷されます.
印刷待ちリスト
例えば、4つの文書(A、B、C、D)が印刷対象リストに順次存在し、重要度が2 1 3 2の場合、CD A Bの順に印刷される.
ソリューション関数を作成してください.パラメータが現在のキュー・リスト内のドキュメントの重要度のソート順と、印刷を要求したドキュメントが現在のキュー・リスト内にある場所を指定した場合、印刷を要求したドキュメントの何回目の印刷かを返します.
せいげんじょうけん
現在のキュー・リストには、100個未満の1つ以上のドキュメントが含まれています.
印刷ジョブの重要性は1~9で表され、数字が大きいほど重要です.
locationには0未満の値(現在のキューリストのタスク数-1)があり、キューリストの一番前にある場合は0、2番目にある場合は1と表示されます.
I/O例
priorities
location
return
[2, 1, 3, 2]
2
1
[1, 1, 9, 1, 1, 1]
0
5
例1
問題の例は次のとおりです.
例2
6つの文書(A、B、C、D、E、F)は、印刷対象リストにおいて、重要度が1 1 1 1 9 1 1 1 1であり、C D E F A Bの順に印刷される.
[回答] function solution(priorities, location) {
let count = 0;
let maxNum = 0;
let maxNumIndex = 0;
const resortedArr = priorities.map((num, idx) => ({idx, num}));
while(true) {
maxNum = 0;
resortedArr.forEach(el => maxNum = el.num > maxNum ? el.num : maxNum);
maxNumIndex = resortedArr.findIndex(el => el.num === maxNum);
const tempArr = [...resortedArr];
const tempArr2 = tempArr.splice(0, maxNumIndex);
resortedArr.splice(0, resortedArr.length);
resortedArr.push(...tempArr.concat(tempArr2));
count += 1;
if(resortedArr.shift().idx === location) return count;
}
}
優先度の低いものを後で送信すると、index
を混合したり、index
を一緒に管理したりすることができます.index
とvalue
を持つようにオブジェクトを作成します.index
とlocation
が同じなら.
抽出された順序はreturn
であった.
Reference
この問題について(プログラマーコード問題2020年/11/05-Lv.2プリンタ), 我々は、より多くの情報をここで見つけました
https://velog.io/@hemtory/Programmers20201105
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
function solution(priorities, location) {
let count = 0;
let maxNum = 0;
let maxNumIndex = 0;
const resortedArr = priorities.map((num, idx) => ({idx, num}));
while(true) {
maxNum = 0;
resortedArr.forEach(el => maxNum = el.num > maxNum ? el.num : maxNum);
maxNumIndex = resortedArr.findIndex(el => el.num === maxNum);
const tempArr = [...resortedArr];
const tempArr2 = tempArr.splice(0, maxNumIndex);
resortedArr.splice(0, resortedArr.length);
resortedArr.push(...tempArr.concat(tempArr2));
count += 1;
if(resortedArr.shift().idx === location) return count;
}
}
Reference
この問題について(プログラマーコード問題2020年/11/05-Lv.2プリンタ), 我々は、より多くの情報をここで見つけました https://velog.io/@hemtory/Programmers20201105テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol