728x90

목차.

  1. 문제
  2. 코드

 

문제

 

백준-10828번-스택

 

백준 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

+ Recent posts