🚩 코딩테스트/알고리즘
[프로그래머스] [PCCP 모의고사 #2] 카페 확장
딩딩크롱
2023. 2. 18. 19:06
728x90
문제
https://school.programmers.co.kr/learn/courses/15009/lessons/121689
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
풀이
큐를 사용해 풀었습니다.
대기 인원을 큐에 저장합니다.
만약 큐가 비어있다면 시간을 도착 시간 + 주문 시간
으로 변경합니다.
큐가 비어있지 않다면 큐에서 하나를 꺼내 시간에 주문 시간
을 더합니다.
그동안 입장한 사람이 있다면 큐에 추가합니다.
한 손님이 카페에서 나감과 동시에 다른 손님이 카페에 들어올 경우, 나가는 손님이 먼저 퇴장한 다음 들어오는 손님이 입장합니다.
라고 하였기 때문에 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