10828번: 스택

첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 �

www.acmicpc.net

 

라이브러리를 사용한 코드

#include <iostream>
#include <stack>
#include <string>

using namespace std;

int main()
{
	int n, value;
	string oper;
	stack<int> stk;

	cin >> n;

	for (int i = 0; i < n; i++) {
		cin >> oper;
		if (oper == "push") {
			cin >> value;
			stk.push(value);
		}

		else if (oper == "pop") {
			if (true == stk.empty()) {
				cout << -1 << endl;
			}
			else {
				cout << stk.top() << endl;
				stk.pop();
			}
		}

		else if (oper == "top") {
			if (true == stk.empty()) {
				cout << -1 << endl;
			}
			else {
				cout << stk.top() << endl;
			}
		}

		else if (oper == "size") {
			cout << stk.size() << endl;
		}

		else if (oper == "empty") {
			if (true == stk.empty()) {
				cout << 1 << endl;
			}
			else cout << 0 << endl;
		}
	}

	return 0;
}

 

런타임 에러 때문에 시간을 많이 잡아먹었는데, 예외 처리를 해주지 않아 생겼던 에러였었다. 테스트 케이스도 제대로 작성해보지 않았었는데, 유의해서 문제 푸는 습관을 들여야겠다.