[210322][백준/BOJ] 10828번 스택
문제
입출력
풀이
STL stack을 이용한 풀이와 직접 push, pop, top, size, empty를 구현한 풀이 두가지 방법으로 문제를 풀었다.
코드
- STL stack
#include <bits/stdc++.h>
using namespace std;
int main(void)
{
int n;
cin >> n;
stack<int> s;
while (n--)
{
string str;
cin >> str;
if (str == "push")
{
int num;
cin >> num;
s.push(num);
}
else if (str == "pop")
{
if (s.empty())
cout << -1 << '\n';
else
{
cout << s.top() << '\n';
s.pop();
}
}
else if (str == "size")
{
cout << s.size() << '\n';
}
else if (str == "empty")
{
if (s.empty())
cout << 1 << '\n';
else
cout << 0 << '\n';
}
else if (str == "top")
{
if (s.empty())
cout << -1 << '\n';
else
cout << s.top() << '\n';
}
}
}
- 직접 구현
#include <bits/stdc++.h>
using namespace std;
const int MX = 1000005;
int dat[MX];
int pos = 0;
void push(int x)
{
dat[pos++] = x;
}
void pop()
{
if (pos == 0)
cout << -1 << '\n';
else
{
cout << dat[pos - 1] << '\n';
pos--;
}
}
void size()
{
cout << pos << '\n';
}
void empty()
{
if (pos == 0)
cout << 1 << '\n';
else
cout << 0 << '\n';
}
void top()
{
if (pos == 0)
cout << -1 << '\n';
else
cout << dat[pos - 1] << '\n';
}
int main(void)
{
int n;
cin >> n;
while (n--)
{
string str;
cin >> str;
if (str == "push")
{
int num;
cin >> num;
push(num);
}
else if (str == "pop")
pop();
else if (str == "size")
size();
else if (str == "empty")
empty();
else if (str == "top")
top();
}
}
Author And Source
이 문제에 관하여([210322][백준/BOJ] 10828번 스택), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@kwkim95/210319백준BOJ-10828번-스택저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)