[プログラマlv 2]プリンタ📚 Java Script


プリンタ


一般的なプリンタでは、必要な印刷順に印刷されます.したがって、重要なドキュメントは後で印刷される可能性があります.この問題を解決するために,重要文書を先に印刷するプリンタを開発した.この新しく開発されたプリンタは、次のように印刷されます.
1. 인쇄 대기목록의 가장 앞에 있는 문서(J)를 대기목록에서 꺼냅니다.
2. 나머지 인쇄 대기목록에서 J보다 중요도가 높은 문서가 한 개라도 존재하면 J를 대기목록의 가장 마지막에 넣습니다.
3. 그렇지 않으면 J를 인쇄합니다.
例えば、4つの文書(A、B、C、D)が印刷対象リストに順次存在し、重要度が2 1 3 2の場合、CD A Bの順に印刷される.私が印刷を要求したドキュメントが何回目の印刷なのか知りたいです.上記の例では、Cは1位、Aは3位である.
ソリューション関数を作成してください.パラメータが現在のキュー・リスト内のドキュメントの重要度のソート順と、印刷を要求したドキュメントが現在のキュー・リスト内にある場所を指定した場合、印刷を要求したドキュメントの何回目の印刷かを返します.

せいげんじょうけん

1. 현재 대기목록에는 1개 이상 100개 이하의 문서가 있습니다.
2. 인쇄 작업의 중요도는 1~9로 표현하며 숫자가 클수록 중요하다는 뜻입니다.
3. location은 0 이상 (현재 대기목록에 있는 작업 수 - 1) 이하의 값을 가지며 대기목록의 가장 앞에 있으면 0, 두 번째에 있으면 1로 표현합니다.

に答える

function solution(priorities, location) {
  let newList = []
  let specialList = {}
  let sortList = [...priorities].sort((a, b) => {
    return b - a
  })
  let count = 0

  for (let i = 0; i < priorities.length; i++) {
    newList.push({ [priorities[i]]: i })
    if (i === location) {
      specialList = { [priorities[i]]: i }
    }
  }
  while (newList !== []) {
    if (Object.keys(newList[0])[0] !== String(sortList[0])) {
      newList.push(newList.shift())
    } else {
      if (Object.values(newList.shift())[0] === Object.values(specialList)[0]) {
        count++
        break
      } else {
        count++
      }
      sortList.shift()
    }
  }
  return count
}

結果