[ BOJ / Python ] 22234번 가희와 은행

황승환·2022년 8월 2일
0

Python

목록 보기
413/498

이번 문제는 큐를 이용하여 해결하였다. 손님들의 정보를 큐에 담고, 은행을 연 뒤에 오는 손님들의 리스트를 온 시간의 내림차순으로 정렬하였다. w라는 시간동안 손님 정보 큐를 빼고 다시 넣는 것을 반복하였고, 다른 손님이 들어올 시간과 같다면 손님을 손님 정보 큐에 넣어주었다. 이 방법을 통해 문제를 해결할 수 있었다.

처음에는 문제를 제대로 읽지 않아 w를 고려하지 않고, 손님 정보 큐가 비워질 때까지 진행하도록 하여 오답 처리를 받았다. 문제를 제대로 읽는 습관을 들여야 겠다...!!!

Code

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()

profile
꾸준함을 꿈꾸는 SW 전공 학부생의 개발 일기

0개의 댓글