#2337 STL Practice - Stack

27  5 s   128 MB  

Description

개념 : http://ko.wikipedia.org/wiki/스택

사용법 : http://www.cplusplus.com/reference/stack/stack/?kw=stack

위의 두 링크를 참고하여 아래의 지시사항대로 프로그램을 작성하시오.

 

빈 스택을 하나 생성한다. 그리고 아래의 명령어대로 스택을 사용하여 문제를 해결하시오.

입력으로 아래의 명령어들이 주어진다. 각 명령어마다 한 줄에 하나 씩 주어진 양식으로 결과를 출력하시오.

"SIZE" : 현재 스택에 저장 된 원소의 수를 출력한다.

"EMPTY" : 현재 스택이 비어있다면 "TRUE", 그렇지 않다면 "FALSE"를 출력한다.

"TOP" : 현재 스택의 가장 위에 저장된 값을 출력한다. 이 때 스택이 현재 비어있다면 "NULL"을 출력한다.

"PUSH X" : 정수 X를 스택에 푸쉬한다. 이 후 스택에 저장되어있는 원소의 수를 출력한다.

"POP" :  정수 X를 스택에서 팝한다. 이후 팝된 값을 출력한다. 이 때 스택이 현재 비어있다면 "EXCEPTION"을 출력한다.

"QUIT" : 현재 스택이 비어있다면 "GOODBYE"를 출력하고 프로그램을 종료한다. 그렇지 않다면 "REMAIN"을 출력한 후 프로그램을 종료한다.

 

 프로그램의 입력은 "QUIT" 명령어가 입력될 때 까지 계속 주어지며, 충분히 많은 값이 입력되기 때문에 스택을 이용하지 않으면 해결이 까다로울 수 있음.

 

Input

입력은 한 줄에 하나 씩 위의 6개 명령어 중 하나가 주어진다.

- "QUIT" 명령어는 항상 입력의 마지막에 있다.

- "PUSH X" 명령어에서 X는 항상 32bit-int 범위에 있다.

 

* 입력의 수가 상당히 많을 수 있므로 Stack을 사용할 것

Output

한 줄에 하나 씩, 각 명령어에 대한 결과를 출력한다.

Sample Input

Sample Output

EMPTY
PUSH 1
PUSH 2
PUSH 5
SIZE
EMPTY
TOP
POP
POP
POP
POP
TOP
QUIT
TRUE
1
2
3
3
FALSE
5
5
2
1
EXCEPTION
NULL
GOODBYE

HINT

입력되는 데이터 양이 상당히 많기때문에 cin, cout을 사용할 시 TLE될 수 있다.

scanf, printf를 사용할 것

Source

김동이 (mitslll, 아주대학교)