[백준] 12789번 도키도키 간식드리미(python)

마뇽미뇽·2025년 7월 1일
0

알고리즘 문제풀이

목록 보기
141/165

1.문제

https://www.acmicpc.net/problem/12789

2.풀이

번호표와 같은 경우 라인(waitline/큐형식)에서 바로 간식을 받을 수 있도록 하고 아닌 경우 대기열(temp/스택형식)로 이동한다. 이후 대기열로 넘어가 만약 번호표에 해당하는 사람이 대기열에 있다면 바로 빠져나와 받을 수 있는 형식으로 구현하였다.

3.코드

최종코드

import sys
from collections import deque

n = int(sys.stdin.readline())
waitline = deque(list(map(int, sys.stdin.readline().split())))
temp = []

num = 1
while waitline:
    if waitline[0] == num:
        waitline.popleft()
        num += 1
    else:
        temp.append(waitline.popleft())

    while temp:
        if temp[-1] == num:
            temp.pop()
            num += 1
        else:
            break

if len(temp) == 0:
    print('Nice')
else:
    print('Sad')

4. TMI

구현을 할 당시 라인에 해당하는 줄을 먼저 해결하고 나서 대기열을 해결하는 로직으로 구현했었다. 그러다보니 대기열 조회, 라인 조회 2번의 연산이 들어가 시간초과가 나왔다.

혼자 머리 끙끙거리며 해결하려다 while문 들여쓰기 한번으로 해결되는 것에 허탈함이 몰려온 문제였다.

profile
Que sera, sera

0개의 댓글