본문 바로가기

알고리즘(C++)/백준 알고리즘

[백준] C++ 10828번 : 스택

풀이과정


N개의 문자열을 입력받아 vector<string> v에 저장한다.

push의 경우 입력할 값이 주어지기 때문에 if문을 사용해서 입력을 한 번 더 받는다.

v에 입력된 값에 맞게 명령을 수행한다.

 

코드


더보기
#include<iostream>
#include<stack>
#include<vector>
#include <string>
using namespace std;

int main()
{
	stack<int> st;
	vector<string> v;
	int iInputSize = 0;

	cin >> iInputSize;
	cin.ignore();

	v.reserve(iInputSize);

	for (int i = 0; i < iInputSize; ++i)
	{
		string s;

		cin >> s;
		v.push_back(s);

		if (s == "push")
		{
			cin >> s;
			v.push_back(s);

		}
	}

	vector<string>::iterator iter = v.begin();
	for (iter; iter != v.end(); ++iter)
	{
		if (*iter == "push")
		{
			++iter;
			st.push( (atoi( (*iter).c_str()) ) );
		}
		else if (*iter == "top")
		{
			if (st.size() == 0) cout << -1 << endl;
			else cout << st.top() << endl;
		}
		else if (*iter == "size")
		{
			cout << st.size() << endl;
		}
		else if (*iter == "empty")
		{
			if (st.size() == 0) cout << 1 << endl;
			else cout << 0 << endl;
		}
		else if (*iter == "pop")
		{
			if (st.size() == 0) cout << -1 << endl;
			else
			{
				cout << st.top() << endl;
				st.pop();
			}
		}
	}

	return 0;
}