문제 바로가기:
https://www.acmicpc.net/problem/10828
10828번: 스택
첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지
www.acmicpc.net
간단하게 스택에 관한 공부를 한 뒤 풀어보면 좋습니다.
#include <bits/stdc++.h>
using namespace std;
const int MX = 1000005;
int dat[MX];
int pos;
void push(int val)
{
dat[pos++] = val;
}
void pop()
{
pos--;
}
int top()
{
return dat[pos - 1];
}
int main(void)
{
ios::sync_with_stdio(0);
cin.tie(0);
int n;
cin >> n;
while(n--)
{
string c;
cin >> c;
if (c == "push")
{
int t;
cin >> t;
push(t);
}
else if(c == "pop")
{
if (pos == 0)
{
cout << -1 << '\n';
}
else
{
cout << top() << '\n';
pop();
}
}
else if (c == "size")
{
cout << pos << '\n';
}
else if (c == "empty")
{
cout << (int)(pos == 0) << '\n';
}
else
{
if (pos == 0)
{
cout << -1 << '\n';
}
else
{
cout << top() << '\n';
}
}
}
}
스택 알고리즘 공부하러 가기:
[실전 알고리즘] 0x05강 - 스택
안녕하세요, 오늘은 스택을 조져보려고 합니다. 이번 시간부터 세 단원 동안 스택, 큐, 덱을 다룰건데 셋 다 비슷비슷해서 하나만 익히고 나면 전반적으로 어렵지않고, 내용 자체도 연결리스트
blog.encrypted.gg
댓글