1 minute read

stack 만들어보기

  • 다른 정답 코드와 비교했을 때 실행시간이 현저히 느린데 아직 이유를 모르겠음.

코드

#include <iostream>
#include <string>


// 함수나 클래스를 만들어아햐나.. 
class Stack {
    int cnt;
    int arr[10001];
    public:
      Stack() : cnt{0} {}
      //push
      void push(int num) {
          cnt++;
          arr[cnt] = num;
      }
      //top
      void top() {
          if (cnt > 0) {
            std::cout << arr[cnt] << '\n';
          } else {
              std::cout << -1 << '\n';
          }
      }
      //pop
      void pop() {
          if (cnt == 0) std::cout << -1 << '\n';
          else {
              std::cout<< arr[cnt] << '\n';
              cnt--;
          }
      }
      //size
      void size() {
          std::cout << cnt << '\n';
      }
      //empty      
      void empty() {
          if (cnt == 0) std::cout << 1 << '\n';
          else std::cout << 0 << '\n';
      }
};

int main() {
    int N;
    std::cin >> N;
    int num;
    std::string order;
    Stack stack;
    for (int i=0; i<N; i++) {
        std::cin >> order;
        // push 일 떄
        if (order == "push") {
            std::cin >> num;
            stack.push(num);
        }
        // pop 일 때
        else if (order == "pop") {
            stack.pop();
        }
        // top 일 때
        else if (order == "top") {
            stack.top();
        }
        // size 일 때
        else if (order == "size") {
            stack.size();
        }
        // empty 일 때
        else if (order == "empty") {
            stack.empty();
        }
    }
    return 0;
}