문 제
소 스 코 드
#include <iostream>
#include <string>
constexpr int MAX_SIZE{ 10'000 };
class Stack {
private:
int m_top;
int m_size;
int *index;
public:
Stack() : m_top{ 0 }, m_size{ 0 }, index{ new int[MAX_SIZE] }{}
~Stack() { delete[] index; }
void Push(const int&);
const int Pop();
int Size() const;
bool Empty() const;
int Top() const;
};
void Stack::Push(const int& n) {
index[m_size] = n;
++m_size;
m_top = n;
}
const int Stack::Pop() {
if (0 == m_size) return -1;
int temp = m_top;
index[m_size - 1] = 0;
--m_size;
m_top = index[m_size - 1];
return temp;
}
int Stack::Size() const {
return m_size;
}
bool Stack::Empty() const {
if (0 == m_size) return 1;
else return 0;
}
int Stack::Top() const {
if (0 == m_size) return -1;
return m_top;
}
int main() {
int N;
std::cin >> N;
Stack stack;
std::string s;
int t;
for (int i = 0; i < N; ++i) {
std::cin >> s;
if ("push" == s) {
std::cin >> t;
stack.Push(t);
}
else if ("pop" == s) std::cout << stack.Pop() << '\n';
else if ("size" == s) std::cout << stack.Size() << '\n';
else if ("empty" == s) std::cout << stack.Empty() << '\n';
else if ("top" == s) std::cout << stack.Top() << '\n';
}
return 0;
}
풀 이
-
동적할당을 통하여 구현.
-
Stack은, 가장 최근에 스택에 추가한 항목이 가장 먼저 나온다. ( Last In First Out )
출 력 값
문 제 출 처
문제 링크 : [ BAEKJOON ] : https://www.acmicpc.net/problem/10828
10828번: 스택
첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 �
www.acmicpc.net
'[ ALGORITHM ] > [ 백 준 ]' 카테고리의 다른 글
[BAEKJOON] 9012번 괄호 (0) | 2020.07.22 |
---|---|
[BAEKJOON] 10773번 제로 (0) | 2020.07.21 |
[BAEKJOON] 2004번 조합 0의 개수 (0) | 2020.07.19 |
[BAEKJOON] 1676번 팩토리얼 0의 개수 (0) | 2020.07.18 |
[BAEKJOON] 9375번 패션왕 신해빈 (0) | 2020.07.17 |