[programmers/Python/スタックキュー]-プリンタ
ソース:https://programmers.co.kr/learn/courses/30/lessons/42587
印刷待ちリストから、先頭の文書(J)を取り出す. 残りの個の印刷対象リストにJよりも重要なドキュメントがある場合は、Jを印刷対象リストの最後に配置します. でなければJを印刷します.
優先度がpop(0)であっても、初期インデックスlocationを保存する方法が考えられます.
最初はリストを単独で作成して管理したいと思っていましたが、この場合は優先度が変わるにつれて位置リストも一緒に変更されるので面倒です.
そこでlist(列挙(priority)によってスタックリストにメタグループ形式(location:priority)でこのように入れ、優先度を元に保ち、スタック変形でコードを記述する.
私の答え
は、各優先度要素をtuple形式(位置:優先度)スタック として列挙する.スタック内の要素が存在する場合、while文 を実行します. for文を迂回して、各要素の優先度が現在の残りの優先度の最大値であるかどうかを確認します. の最低価格優先度がある場合、スタック要素に基づいてスライスしてスタックを変更します.
stack = stack[i:] + stack[:i] 回答+=1が完了すると、その要素の位置が要求された文書である場合、関数 に戻り、終了する.要素の場所が要求されたドキュメントでない場合、スタック.Pop(0)は、break文でfor文を終了し、while文 を再実行します.
印刷待ちリスト
優先度がpop(0)であっても、初期インデックスlocationを保存する方法が考えられます.
最初はリストを単独で作成して管理したいと思っていましたが、この場合は優先度が変わるにつれて位置リストも一緒に変更されるので面倒です.
そこでlist(列挙(priority)によってスタックリストにメタグループ形式(location:priority)でこのように入れ、優先度を元に保ち、スタック変形でコードを記述する.
私の答え def solution(priorities, location):
answer = 0
stack = list(enumerate(priorities))
while stack:
for i in range(len(stack)):
if stack[i][1] == max(list(map(lambda x:x[1], stack))):
stack = stack[i:] + stack[:i]
answer += 1
if stack[0][0] == location:
return answer
stack.pop(0)
break
コードの説明
def solution(priorities, location):
answer = 0
stack = list(enumerate(priorities))
while stack:
for i in range(len(stack)):
if stack[i][1] == max(list(map(lambda x:x[1], stack))):
stack = stack[i:] + stack[:i]
answer += 1
if stack[0][0] == location:
return answer
stack.pop(0)
break
stack = list(enumerate(priorities))
stack = stack[i:] + stack[:i]
for i in range(len(stack)):
if stack[i][1] == max(list(map(lambda x:x[1], stack))):
stack = stack[i:] + stack[:i]
answer += 1
if stack[0][0] == location:
return answer
stack.pop(0)
break
Reference
この問題について([programmers/Python/スタックキュー]-プリンタ), 我々は、より多くの情報をここで見つけました https://velog.io/@everyyoung/Programmers-Python-스택-큐-프린터テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol