https://www.acmicpc.net/problem/12789
번호표와 같은 경우 라인(waitline/큐형식)에서 바로 간식을 받을 수 있도록 하고 아닌 경우 대기열(temp/스택형식)로 이동한다. 이후 대기열로 넘어가 만약 번호표에 해당하는 사람이 대기열에 있다면 바로 빠져나와 받을 수 있는 형식으로 구현하였다.
최종코드
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')
구현을 할 당시 라인에 해당하는 줄을 먼저 해결하고 나서 대기열을 해결하는 로직으로 구현했었다. 그러다보니 대기열 조회, 라인 조회 2번의 연산이 들어가 시간초과가 나왔다.
혼자 머리 끙끙거리며 해결하려다 while문 들여쓰기 한번으로 해결되는 것에 허탈함이 몰려온 문제였다.