[210322][백준/BOJ] 10828번 스택

문제

입출력


풀이

STL stack을 이용한 풀이와 직접 push, pop, top, size, empty를 구현한 풀이 두가지 방법으로 문제를 풀었다.

코드

  1. STL stack
#include <bits/stdc++.h>
using namespace std;

int main(void)
{
	int n;
	cin >> n;
	stack<int> s;
	
    while (n--)
	{
		string str;
		cin >> str;

		if (str == "push")
		{
			int num;
			cin >> num;
			s.push(num);
		}
		else if (str == "pop")
		{
			if (s.empty()) 
				cout << -1 << '\n';
			else 
			{
				cout << s.top() << '\n';
				s.pop();
			}
		}
		else if (str == "size")
		{
			cout << s.size() << '\n';
		}
		else if (str == "empty")
		{
			if (s.empty())
				cout << 1 << '\n';
			else
				cout << 0 << '\n';
		}
		else if (str == "top")
		{
			if (s.empty())
				cout << -1 << '\n';
			else 
				cout << s.top() << '\n';
		}
	}
}
  1. 직접 구현
#include <bits/stdc++.h>
using namespace std;

const int MX = 1000005;
int dat[MX];
int pos = 0;

void push(int x) 
{
	dat[pos++] = x;
}

void pop()
{
	if (pos == 0)
		cout << -1 << '\n';
	else
	{
		cout << dat[pos - 1] << '\n';
		pos--;
	}
}

void size()
{
	cout << pos << '\n';
}

void empty()
{
	if (pos == 0)
		cout << 1 << '\n';
	else
		cout << 0 << '\n';
}

void top() 
{
	if (pos == 0)
		cout << -1 << '\n';
	else
		cout <<  dat[pos - 1] << '\n';
}

int main(void)
{
	int n;
	cin >> n;

	while (n--)
	{
		string str;
		cin >> str;

		if (str == "push")
		{
			int num;
			cin >> num;
			push(num);
		}
		else if (str == "pop")
			pop();
		else if (str == "size")
			size();
		else if (str == "empty")
			empty();
		else if (str == "top")
			top();
	}
}

좋은 웹페이지 즐겨찾기