C++에서 string으로 switch문을 사용하지 못 한다는 것을 처음 알게된 문제였다. else if문을 쭉 나열하며 작성한 코드라 조금 찝찝하지만 이거밖에 방법이 없는 것 같아서 그냥 넘어간 문제이다. ㅡㅜㅡ
이 문제는 입력으로 주어지는 명령을 처리하는 Stack을 구현하는 문제이다.
단순한 Stack자료구조를 구현하는 문제이기 때문에 vector의 여러 내장함수들을 사용하여 해결할 수 있을 것이라 생각하였다.
push X: X를 vector에 삽입하기
pop: vector에 top 출력하고 삭제하기 만약 vector가 비어있다면 -1
size: vector의 size 출력하기
empty: vector가 비어있으면 1, 아니면 0을 출력하기
top: vector의 top 출력하기 만약 vector가 비어있다면 -1
#include<iostream>
#include<string>
#include<vector>
using namespace std;
int main(){
vector<int> stack;
int count;
cin >> count;
for(int i = 0; i < count; i++){
string command;
cin >> command;
if(command == "push"){
int n;
cin >> n;
stack.push_back(n);
}
else if(command == "pop" || command == "top"){
if(stack.empty()) cout << -1;
else {
cout << stack[stack.size() - 1];
if(command == "pop") stack.erase(stack.begin() + stack.size() - 1);
}
}
else if(command == "size"){
cout << stack.size();
}
else if(command == "empty"){
cout << (int)stack.empty();
}
}
}