728x90
목차.
문제
백준 10828번 문제는 스택의 기본적인 기능을 다뤄보는 문제입니다.
stl에서 제공하는 스택을 사용하는 방법도 있지만
저는 이번에 스택 클래스를 직접 구현해서 문제를 풀어봤습니다.
코드
#include<iostream>
#include<string>
using namespace std;
class Stack {
private:
int* arr;
int index;
public:
Stack(int N) {
arr = new int[N];
index = -1;
}
~Stack() {
delete[] arr; // 동적으로 할당된 배열을 해제
}
void Push(int data) {
arr[++index] = data;
}
int Pop() {
if (index != -1)
return arr[index--];
return -1;
}
int Top() {
if(index != -1)
return arr[index];
return -1;
}
int Empty() {
if (index == -1)
return 1;
return 0;
}
int Size() {
return (index + 1);
}
};
int main() {
int testCase;
cin >> testCase;
Stack stack(testCase);
while (testCase--) {
string str;
cin >> str;
int data;
if (str == "push") {
cin >> data;
stack.Push(data);
}
else if (str == "top")
cout << stack.Top() << '\n';
else if (str == "size")
cout << stack.Size() << '\n';
else if (str == "empty")
cout << stack.Empty() << '\n';
else if (str == "pop")
cout << stack.Pop() << '\n';
}
return 0;
}
코드는 간단하게 문제에서 나오는 조건대로 함수를 만들어줬습니다.
소멸자를 쓰지 않는다면 자동으로 적용되기 때문에 꼭 쓸 필요는 없습니다.
728x90
'코딩테스트' 카테고리의 다른 글
[C++] 백준 1874번 : 스택 수열 (0) | 2023.09.29 |
---|---|
[C++] 백준 9012번 : 괄호 (0) | 2023.09.28 |
C++ : 최빈값 구하기 (0) | 2023.09.15 |
C++ : 분수의 덧셈 (0) | 2023.09.14 |
[백준][C++] 10798 문제 : 세로읽기 (0) | 2023.08.24 |