300x250

알고리즘 문제 풀이입니다.

1. 제목

- 백준 10828 스택

- BOJ 10828 스택


2. 문제설명

평범하게 스택을 구현하는 문제 입니다.


3. 풀이과정

사실 C++ STL 라이브러리에 stack이 이미 구현이 되어 있는데 그대로 쓰면 너무 양심에 찔려서 매우 유사한 vector로 구현 해봤습니다.


4. 함수설명

vector에 사실 size와 empty가 다 구현이 되어 있어서 저는 그냥 사용만 했습니다.

vector.size() // 벡터에 원소수 출력합니다.

vector.empty() // 벡터에 원소가 없으면 1 출력 있으면 0 출력합니다.

vector.push_back() // 벡터에 맨 끝에 원소 삽입합니다

vector.back() // 벡터에 맨 마지막 값 가리킴, 스택의 탑과 유사합니다.

vector.pop() // 벡터 맨 마지막값 삭제합니다.


5. 코드

#include <iostream>
#include <string>
#include <vector>

using namespace std;

int main()
{
	vector <int> vec_stack;
	int length;

	cin >> length;

	for (int i = 0; i < length; i++)
	{
		string command;
		cin >> command;

		if (command == "push")
		{
			int num;
			cin >> num;
			vec_stack.push_back(num);
		}
		else if (command == "pop")
		{
			if (vec_stack.empty())
			{
				cout << "-1" << endl;
			}
			else
			{
				cout << vec_stack.back() << endl;
				vec_stack.pop_back();
			}
		}
		else if (command == "size")
		{
			cout << vec_stack.size() << endl;
		}
		else if (command == "empty")
		{
			cout << vec_stack.empty() << endl;
		}
		else if (command == "top")
		{
			if (vec_stack.empty())
			{
				cout << "-1" << endl;
			}
			else
			{
				cout << vec_stack.back() << endl;
			}			
		}
		else
		{
			cout << "ERROR" << endl;
		}

	}
}

 

출처 : www.acmicpc.net/problem/10828

감사합니다.

300x250