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