이번 문제는 큐를 이용하여 해결하였다. 손님들의 정보를 큐에 담고, 은행을 연 뒤에 오는 손님들의 리스트를 온 시간의 내림차순으로 정렬하였다. w라는 시간동안 손님 정보 큐를 빼고 다시 넣는 것을 반복하였고, 다른 손님이 들어올 시간과 같다면 손님을 손님 정보 큐에 넣어주었다. 이 방법을 통해 문제를 해결할 수 있었다.
처음에는 문제를 제대로 읽지 않아 w를 고려하지 않고, 손님 정보 큐가 비워질 때까지 진행하도록 하여 오답 처리를 받았다. 문제를 제대로 읽는 습관을 들여야 겠다...!!!
from collections import deque
n, t, w = map(int, input().split())
wait_q = deque()
for _ in range(n):
sp, st = map(int, input().split())
wait_q.append((sp, st, 0))
m = int(input())
nxt_client = []
for _ in range(m):
sp, st, sc = map(int, input().split())
nxt_client.append((sp, st, sc))
nxt_client.sort(key=lambda x:x[2], reverse=True)
def banking():
np, ns, nc = wait_q.popleft()
tmp = t
for now in range(1, w+1):
if nxt_client and nxt_client[-1][2] == now:
wait_q.append(nxt_client.pop())
print(np)
tmp -= 1
ns -= 1
if tmp == 0 or ns == 0:
if ns > 0:
wait_q.append((np, ns, nc))
tmp = t
if wait_q:
np, ns, nc = wait_q.popleft()
banking()