🚩 코딩테스트/알고리즘

[프로그래머스] [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