728x90
문제
https://school.programmers.co.kr/learn/courses/15009/lessons/121689
풀이
큐를 사용해 풀었습니다.
대기 인원을 큐에 저장합니다.
만약 큐가 비어있다면 시간을 도착 시간 + 주문 시간
으로 변경합니다.
큐가 비어있지 않다면 큐에서 하나를 꺼내 시간에 주문 시간
을 더합니다.
그동안 입장한 사람이 있다면 큐에 추가합니다.
한 손님이 카페에서 나감과 동시에 다른 손님이 카페에 들어올 경우, 나가는 손님이 먼저 퇴장한 다음 들어오는 손님이 입장합니다.
라고 하였기 때문에 i * k == time
인 사람이 있다면 큐에 추가하지 않습니다.
코드
파이썬
from collections import deque
def solution(menu, order, k):
answer = 0
n = len(order)
queue = deque()
i = 0
time = 0
while queue or i < n:
if not queue:
time = (i * k) + menu[order[i]]
i += 1
else:
x = queue.popleft()
time += menu[x]
while i < n and i <= ((time - 1) // k):
queue.append(order[i])
i += 1
answer = max(answer, len(queue))
return answer + 1
728x90
'🚩 코딩테스트 > 알고리즘' 카테고리의 다른 글
[프로그래머스] 파괴되지 않은 건물 (0) | 2023.02.23 |
---|---|
[프로그래머스] [PCCP 모의고사 #2] 보물 지도 (0) | 2023.02.19 |
[프로그래머스] [PCCP 모의고사 #2] 신입사원 교육 (0) | 2023.02.18 |
[프로그래머스] [PCCP 모의고사 #2] 실습용 로봇 (0) | 2023.02.18 |
[프로그래머스] [PCCP 모의고사 #1] 체육대회 (0) | 2023.02.18 |