https://www.acmicpc.net/problem/10828
정수를 저장하는 스택을 구현하여 입력으로 주어지는 명령을 처리하는 프로그램을 작성
입력
첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 않은 명령이 주어지는 경우는 없다.
출력
출력해야하는 명령이 주어질 때마다, 한 줄에 하나씩 출력한다.
top
은 dat[pos-1]
로 조회할 수 있다.pos
로 조회할 수 있다.#include <iostream>
using namespace std;
const int MX = 100005;
int dat[MX];
int pos = 0;
int main(void) {
ios::sync_with_stdio(0);
cin.tie(0);
int N;
cin >> N;
string s;
int x;
for (int i = 0; i < N; i++) {
cin >> s;
if (s == "push") {
cin >> x;
dat[pos++] = x;
} else if (s == "pop") {
if (!pos)
cout << -1 << '\n';
else {
pos--;
cout << dat[pos] << '\n';
}
} else if (s == "size") {
cout << pos << '\n';
} else if (s == "empty") {
if (pos)
cout << 0 << '\n';
else
cout << 1 << '\n';
} else if (s == "top") {
if (!pos)
cout << -1 << '\n';
else
cout << dat[pos - 1] << '\n';
}
}
}
#include <iostream>
#include <list>
using namespace std;
int main(void) {
ios::sync_with_stdio(0);
cin.tie(0);
list<int> mystack;
int N; // 명령의 수
int num; // push 명령에서 입력으로 주어지는 수
string command; // 입력으로 주어지는 명령
cin >> N;
for (int i = 0; i < N; i++) {
cin >> command;
if (command == "push") {
cin >> num;
mystack.push_back(num);
}
else if (command == "pop") {
if (mystack.empty()) {
cout << -1 << '\n';
}
else {
cout << mystack.back() << '\n';
mystack.pop_back();
}
}
else if (command == "size") {
cout << mystack.size() << '\n';
}
else if (command == "empty") {
if (mystack.empty()) {
cout << 1 << '\n';
}
else {
cout << 0 << '\n';
}
}
else if (command == "top") {
if (mystack.empty()) {
cout << -1 << '\n';
}
else {
cout << mystack.back() << '\n';
}
}
}
}
stackname.empty()
는 스택이 비어있으면 True, 스택이 비어있지 않다면 False를 반환 stackname.empty()
를 int
형으로 형변환하여 출력한다. #include <iostream>
#include <stack>
using namespace std;
int main(void) {
ios::sync_with_stdio(0);
cin.tie(0);
stack<int> S;
int N;
cin >> N;
string s;
while (N--) {
cin >> s;
if (s == "push") {
int t;
cin >> t;
S.push(t);
} else if (s == "pop") {
if (S.empty())
cout << -1 << '\n';
else {
cout << S.top() << '\n';
S.pop();
}
} else if (s == "size")
cout << S.size() << '\n';
else if (s == "empty")
cout << (int)S.empty() << '\n';
else // top
{
if (S.empty())
cout << -1 << '\n';
else
cout << S.top() << '\n';
}
}
}