728x90
간단하게 스택을 구현하면 되는 문제로, 배열을 써서 풀었고 STL stack을 사용한 간단한 버전도 올려놨다.
[1차원 배열 이용]
#include <iostream>
using namespace std;
void push(int value);
void pop();
void size();
void empty();
void top();
int N;
int top_v = -1;
int myStack[100000];
int main(void) {
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
string com;
cin >> N;
for(int i=0; i<N; i++) {
cin >> com;
if(com == "push") {
int x;
cin >> x;
push(x);
}
else if(com == "pop") pop();
else if(com == "size") size();
else if(com == "empty") empty();
else if(com == "top") top();
}
return 0;
}
void push(int value) {
if(top_v >= N-1) return;
else {
top_v++;
myStack[top_v] = value;
}
}
void pop() {
if(top_v <= -1) cout << "-1" << "\n";
else
cout << myStack[top_v--] << "\n";
}
void size() {
cout << top_v + 1 << "\n";
}
void empty() {
if(top_v<=-1) cout << "1" << "\n";
else cout << "0" << "\n";
}
void top() {
if(top_v<=-1) cout << "-1" << "\n";
else cout << myStack[top_v] << "\n";
}
[STL stack 이용]
#include <iostream>
#include <stack>
using namespace std;
int main(void) {
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
stack<int> s;
int N;
string com;
cin >> N;
for(int i=0; i<N; i++) {
cin >> com;
if(com == "push") {
int x;
cin >> x;
s.push(x);
}
else if(com == "pop") {
if(!s.empty()) { cout << s.top() << "\n"; s.pop(); }
else cout << "-1" << "\n";
else if(com == "size") cout << s.size() << "\n";
else if(com == "empty") {
if(s.empty()) cout << "0" << "\n";
else cout << "-1" << "\n";
}
else if(com == "top") {
if(!s.empty()) cout << s.top() << "\n";
else cout << "-1" << "\n";
}
}
return 0;
}
728x90
'Algorithm > 백준과 프로그래머스' 카테고리의 다른 글
[C++] 1158. 요세푸스 (0) | 2023.07.15 |
---|---|
[C++] 9012. 괄호 (0) | 2023.07.14 |
[C++] 2751. 수 정렬하기 2 (0) | 2023.07.06 |
[C++] 11728 : 배열 합치기 (0) | 2022.04.12 |
[C++] 2193 : 이친수 (0) | 2022.04.12 |