코딩/문제

백준 10828 스택

Hun die 2022. 6. 28. 10:09

https://www.acmicpc.net/problem/10828

 

10828번: 스택

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

www.acmicpc.net

 

#include <iostream>
#include <stack>

using namespace std;
#define sin(a) if(str == a)

int main()
{
	int input;
	cin >> input;

	stack<int> s;

	for (int i = 0; i < input; i++)
	{
		string str;
		cin >> str;

		sin("push")
		{
			int num;
			cin >> num;
			
			s.push(num);
		}
		sin("pop")
		{
			if (s.empty() != true)
			{
				cout << s.top() << "\n";
				s.pop();
			}
			else
			{
				cout << "-1" << "\n";
			}
		}
		sin("size")
		{
			cout << s.size() << "\n";
		}
		sin("empty")
		{
			if (s.empty() == true)
			{
				cout << "1";
			}
			else
			{
				cout << "0";
			}
			cout << "\n";
		}
		sin("top")
		{
			if (s.empty() != true)
			{
				cout << s.top() << "\n";
			}
			else
			{
				cout << "-1" << "\n";
			}
		}
	}
}

 

기본적으로 스택 사용법을 익히는 문제라고 생각한다.

 

'코딩 > 문제' 카테고리의 다른 글

백준 9012 괄호  (0) 2022.06.28
백준 10773 제로  (0) 2022.06.28
코딩 시험 8번 class화  (0) 2022.06.20
코딩 시험 7번 class화  (0) 2022.06.16
코딩 시험 6번 class화  (0) 2022.06.16