문제: 12789번: 도키도키 간식드리미 (acmicpc.net)
12789번: 도키도키 간식드리미
인하대학교 학생회에서는 중간, 기말고사 때마다 시험 공부에 지친 학우들을 위해 간식을 나눠주는 간식 드리미 행사를 실시한다. 승환이는 시험 기간이 될 때마다 간식을 받을 생각에 두근두
www.acmicpc.net
코드
코드 설명
위 문제를 보시면, 우측에서 대기하는 줄은 큐의 특성을 가지고 있고 좌측 아래에서 대기하는 줄은 스택의 특성을 가지고 있다. 따라서, 먼저 해당 대기줄에 대해서 큐와 스택을 선언해 주었다.
for문으로 입력 받은 순서를 먼저 큐에 다 넣어 주었다.
그 후, 순서대로 받아야 하므로 순서를 알 수 있는 임의의 변수 num을 선언해서 1로 저장을 해주었다.
while문을 통해서 큐하고 스택이 둘다 빌 때까지 반복을 해주었고, 반복하는 도중, 큐의 front값이 해당 num값과 같다면 옳바른 순서이므로 바로 pop을 시키고 num값을 증가시켜서 다음 순서를 알아 볼 수 있도록 하였다. 또한, 만약에 스택의 top값이 해당 num값과 같다면 pop을 시키고 num값을 증가시켰다. 위의 두 가지 경우를 성립하지 않고 큐가 비어있지 않은 경우, 스택에 값을 넣어주고 pop시켜 주었다. 만약 위의 모든 조건문에 성립하지 않는다면, 주어진 대기줄은 성공적으로 성립할 수 없으므로 에러를 뜻하는 Sad를 출력해주고 함수를 끝내버렸다.
while문을 성공적으로 탈출을 하였으면, 위의 대기줄은 성공적으로 이루어졌으므로 Nice를 출력시킨다.