[프로그래머스] 카페 확장 (Python)

yuuforest·2023년 10월 2일

알고리즘

목록 보기
5/8
post-thumbnail

프로그래머스 문제 풀이 - PCCP 모의고사 #2

📰 문제


문제 확인 🏃


💡 입출력 예제


[5, 12, 30], [1, 2, 0, 1], 10

>> 3
[5, 12, 30], [2, 1, 0, 0, 0, 1, 0], 10

>> 4
[5], [0, 0, 0, 0, 0], 5

>> 1
[5, 6, 7, 11], [1, 2, 3, 3, 2, 1, 1], 10

>> 2

💬 풀이


🎵 첫번째 풀이

def solution(menu, order, k):
    answer = 0

    client = []
    start, end = -k, 0

    for idx in range(len(order)):

        start += k
        end = (start if end < start else end) + menu[order[idx]]
        client.append(end)

        count = 1
        for jdx in range(idx):
            if start < client[jdx]:
                count += 1
        
        answer = max(answer, count)

    return answer

🎵 두번째 풀이

import heapq

def solution(menu, order, k):
    
    answer = 1
    start, end = -k, 0

    queue = []

    for idx in range(len(order)):

        start += k 
        end = (start if end < start else end) + menu[order[idx]]
        heapq.heappush(queue, end)

        while queue:
            now = heapq.heappop(queue)
            if start < now:
                heapq.heappush(queue, now)
                break
        
        answer = max(answer, len(queue))

    return answer

🎵 세번째 풀이 😇

import heapq

def solution(menu, order, k):
    
    answer = 1
    start, end = -k, 0

    queue = []

    for o in order:

        start += k 
        end = (start if end < start else end) + menu[o]
        heapq.heappush(queue, end)

        while queue:
            now = heapq.heappop(queue)
            if start < now:
                heapq.heappush(queue, now)
                break
        
        answer = max(answer, len(queue))

    return answer


✒️ 생각


너무 느리니 다른 방식이 필요해 -> 해결 😁

profile
🐥 Backend Developer 🐥

0개의 댓글