[스택] 10828. 스택

알고리즘/백준 알고리즘

2020. 4. 28. 15:27

1. 문제 해결 전략

스택을 쓰면된다..

 

#include <iostream>
#include <stack>
#include <string.h>

std::stack<int> s;
int n = 10001;

void function(std::string str, int value)
{
	if (str == ("push"))
	{
		s.push(value);
		return;
	}
	else if (str == ("pop"))
	{
		if (s.empty())
		{
			std::cout << -1 << std::endl;
			return;
		}
		std::cout << s.top() << std::endl;

		s.pop();
		return;
	}
	else if (str == ("top"))
	{
		if (s.empty())
		{
			std::cout << -1 << std::endl;
			return;
		}
		std::cout << s.top() << std::endl;
		return;
	}
	else if (str == ("size"))
	{
		std::cout << s.size() << std::endl;
		return;
	}
	else if (str == ("empty"))
	{
		if (s.empty())
		{
			std::cout << 1 << std::endl;
			return;
		}
		else
			std::cout << 0 << std::endl;
		return;
	}
}

int main()
{
	std::cin >> n;
	std::string str;
	int val = 0;
	for (int i = 0; i < n; i++)
	{
		char pdata[128] = { 0, };
		std::cin >> pdata;
		str = pdata;
		if (str == "push")
		{
			std::cin >> val;
		}
		function(pdata, val);
	}
}

스택을 쓰면 아무것도 아니다..

 

2. 걸린 시간

30분

 

3. 느낀점

스택을 구현하고 앉아 있었다.. 그냥 스택을 쓰자. 그리고 입력을 여러번 넣고 출력을 여러번해야하는 경우에

자료구조를 만들어서 미리 넣어둔 후 한꺼번에 출력해야하는줄 알았는데, 이번에 입력하나에 출력하나씩 해보니 

아무 문제없이 돌아갔다. 이것때문에 몇번 고생했었는데 그냥 바로바로 입출력을 해야겠다.

 

4. 링크

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

'알고리즘 > 백준 알고리즘' 카테고리의 다른 글

[x] 10824 : 네 수  (0) 2020.04.30
[스택] 9012. 괄호  (0) 2020.04.28
[정렬] 11652. 카드  (0) 2020.04.21
[정렬] 10825. 국영수  (0) 2020.02.18
[정렬] 10814. 나이순 정렬  (0) 2020.02.18