
풀이
자료구조
- int stack[] : 스택을 구현하기 위한 배열
- int top : top의 역할을 하는 변수
- int data : 입력 값
- int num : 테스트 입력 수를 저장하는 변수
- int count : 실행횟수 세기 위한 변수
알고리즘
- 스택
- 자료구조
코드
- C++은 string이라는 문자열을 처리하기에 유리한 변수가 있기 때문에 사용
- 문자열끼리 비교할 때는 compare() 함수 사용
코드
#include <iostream>
#include <string>
using namespace std;
#define STACK_SIZE 10000
int stack[STACK_SIZE]; //STACK_SIZE 만큼의 int형 배열
int top = -1; //top 선언 및 초기화
int isEmpty() { //스택이 비어있는지 확인
if(top < 0) {
return 1;
}
else {
return 0;
}
}
int isFull() { //스택이 꽉 차있는지 확인
if (top == STACK_SIZE - 1) {
return 1;
}
else {
return 0;
}
}
void Push(int input) { //스택에 데이터를 삽입하는 함수
if(!isFull()) { //스택이 꽉 차있는지 확인
top++; //top을 증가
stack[top] = input; //데이터 삽입
}
else {
cout << "Stack is Full\n";
}
}
int Pop() { //스택에서 데이터를 삭제하는 함수
int data;
if(isEmpty()) { //스택이 비어있는지 확인
data = -1;
}
else {
data = stack[top];
stack[top] = 0; //스택의 가장 끝 데이터를 0으로 초기화
top--; //top 감소
}
return data;
}
int printtop() { //top을 출력
int data = 0;
if(isEmpty()) {
return -1;
}
else {
data = stack[top];
}
return data;
}
int main() {
string command;
int num = 0;
int input = 0;
int count = 0;
cin >> num;
while(count < num) {
cin >> command;
if(!command.compare("push")) {
cin >> input;
Push(input);
count++;
}
else if(!command.compare("pop")) {
cout << Pop() << "\n";
count++;
}
else if(!command.compare("top")) {
cout << printtop() << "\n";
count++;
}
else if(!command.compare("size")) {
cout << top + 1<< "\n";
count++;
}
else if (!command.compare("empty")) {
cout << isEmpty() << "\n";
count++;
}
}
return 0;
}
총평
이 블로그에 써뒀던 스택 관련된 글의 코드를 살짝 수정했다.
https://cocoiscat.tistory.com/32
[자료구조/C++] 스택(Stack)
스택이란? 인터넷을 돌아다니다 보면 "업보 스택 쌓는다"라는 말을 들을 수 있을 것이다. 무언가 잘못을 해서 업보를 차곡차곡 쌓는다는 뜻인데, 나중에 이를 그대로 돌려받을 때 "업보 청산" 한
cocoiscat.tistory.com
스택에 대해 설명도 열심히 써뒀으니 읽어보면 도움이 될 거라고 생각한다.
'🧑💻코딩 테스트 > 백준 (BOJ)' 카테고리의 다른 글
[백준 알고리즘/ C++] BOJ.2292 : 벌집 (0) | 2022.01.31 |
---|---|
[코딩테스트/ 백준 알고리즘] BOJ.2798 : 블랙잭 (C++ 풀이) (0) | 2022.01.30 |
[코딩테스트/ 백준 알고리즘] BOJ.1463 : 1로 만들기(바텀업) (C++ 풀이) (0) | 2022.01.18 |
[코딩테스트/ 백준 알고리즘] BOJ.1463 : 1로 만들기(탑다운) (C++ 풀이) (0) | 2022.01.18 |
[코딩테스트/ 백준 알고리즘] BOJ.2839 : 설탕배달 (바텀업) (C++ 풀이) (0) | 2022.01.17 |
댓글