プリンタ(Programmers 42587)
8881 ワード
🧑💻 質問する
一般的なプリンタでは、必要な印刷順に印刷されます.したがって、重要なドキュメントは後で印刷される可能性があります.この問題を解決するために,重要文書を先に印刷するプリンタを開発した.この新しく開発されたプリンタは、次のように印刷されます.
印刷待ちリスト
私が印刷を要求したドキュメントが何回目の印刷なのか知りたいです.上記の例では、Cは1位、Aは3位である.
ソリューション関数を作成してください.パラメータが現在のキュー・リスト内のドキュメントの重要度のソート順と、印刷を要求したドキュメントが現在のキュー・リスト内にある場所を指定した場合、印刷を要求したドキュメントの何回目の印刷かを返します.
せいげんじょうけん
I/O例説明
🧑💻 解決策
🧑💻 コード#コード#
from collections import deque
def solution_fail(priorities, location):
answer = 0
val_location = priorities[location]
pop_idx = 0
pop_pri = 0
# 인덱스 deque 생성
index = []
for i in range(len(priorities)):
index.append(i)
index = deque(index)
# deque of priorities
p = deque(priorities)
for i in range(len(priorities)):
for j in range(i + 1, len(priorities)):
if priorities[i] < priorities[j]:
pop_idx = index.popleft()
pop_pri = p.popleft()
index.append(pop_idx)
p.append(pop_pri)
break
p = list(p)
index = list(index)
for i in range(len(priorities)):
if index[i] == location and p[i] == val_location:
answer = i + 1
return answer
def solution(priorities, location):
answer = 0
p = deque([(v, i) for i, v in enumerate(priorities)])
while len(p):
val = p.popleft()
if p and max(p)[0] > val[0]:
p.append(val)
else:
answer += 1
if val[1] == location:
break
return answer
🧑💻 コード解析
🧑💻 総評
Reference
この問題について(プリンタ(Programmers 42587)), 我々は、より多くの情報をここで見つけました https://velog.io/@moonpiderman/프린터-Programmers-42587-mvjb017qテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol