応急(Q)


作成日:2022年1月27日午後5:58

インプリメンテーションコード

# 응급실 (큐)
import sys
from collections import deque
#sys.stdin = open("input.txt", "rt")
n, m = map(int, input().split())
patientsQ = [(index, val) for index, val in enumerate(list(map(int, input().split())))]
patientsQ = deque(patientsQ)
cnt = 0

while True:
    cur = patientsQ.popleft()
    for i, v in patientsQ:
        if v > cur[1]:
            patientsQ.append(cur)
            break
    else:
        if cur[0] != m:
            cnt += 1
        else:
            cnt += 1
            break

print(cnt)

模範解答

import sys
from collections import deque
sys.stdin=open("input.txt", "r")
n, m=map(int, input().split())
Q=[(pos, val) for pos, val in enumerate(list(map(int, input().split())))]
Q=deque(Q)
cnt=0
while True:
    cur=Q.popleft()
    if any(cur[1]<x[1] for x in Q):
        Q.append(cur)
    else:
        cnt+=1
        if cur[0]==m:
            print(cnt)
            break
  • 差異
  • で私が実装したコードではfori,v in pateintsq:curより大きい値があるかどうかをチェックするコードが重複文で直接実装されています.
  • この部分はany()関数を用いて
  • のモデルで実現された.