문제 번호 1409. -- DLL을 이용한 STACK/QUEUE 동시구현

1409: DLL을 이용한 STACK/QUEUE 동시구현

시간 제한: 1 Sec  메모리 제한: 128 MB
제출: 294  해결 문제 수: 167
[제출][채점 상황 열람][게시판]

문제 설명

DLL을 이용하면 stack과 queue 역할을 동시에 수행하는 자료구조를 쉽게 만들 수 있다.

이 자료구조의 이름을 'QUETACK'이라고 하자.

특히,  quetack은 링크드리스트를 이용하기 때문에  저장 가능한 데이터 개수의 제한이 없다는 장점이 있다.

Quetack이 stack처럼 동작하여 push 혹은 pop을 할 때는 DLL의 끝부분에서 데이터의 추가와 추출이 이루어진다.

Queue처럼 동작하는 경우, dequeue는 DLL의 head가 가리키는 앞부분, enqueue는 DLL의 끝부분에서 각각 추출과 추가가 이뤄진다.

입력은 두 개의 정수쌍들로 cmd, value로 주어지는 데

cmd = -1이면 push 이고, 이 때 value는 QUETACK에 push된다.


cmd = -2, value = -2이면 QUETACK에서 pop이 수행된다.

cmd = -3,이면 value는 QUETACK에 enqueue (DLL의 끝)된다.

cmd = -4, value = -4이면 QUETACK에서 dequeue가 수행된다.

cmd = -999, value = -999이면, QUETACK에 저장된 값들을 DLL의 head부터 마지막까지 하나씩 출력한 후 프로그램을 종료한다. 각 숫자 사이에는 한 개의 공백문자가 있고, 끝에 줄바꿈은 없다.

예를 들어, 입력으로 다음이 주어지면,

-1 1

-1 2

-3 3

-3 4

-2 -2

-4 -4

-999 -999

출력은 다음과 같다.

2 3


주의할 점은, pop 혹은 dequeue할 때 empty stack 혹은 queue를 고려하여야 한다.

-999,-999가 입력된 상황에서 QUETACK이 비어있으면, Nothing (N은 대문자, 나머지 소문자)를 출력한다. 맨 끝에 줄바꿈없음.


입력

-1 1

-1 2

-3 3

-3 4

-2 -2

-4 -4

-999 -999

출력

2 3

입력 예시

-1 1
-1 2
-3 3
-3 4
-2 -2
-4 -4
-999 -999

출력 예시

2 3

도움말

출처

[제출][채점 상황 열람]