article thumbnail image
Published 2022. 9. 28. 17:01

문제: https://www.acmicpc.net/problem/10828

 

 

 

 

#include <bits/stdc++.h>
using namespace std;
stack<int> s;
string cmd;
int n;
int k;
int main() {
  ios::sync_with_stdio(0);
  cin.tie(0);

  cin >> n;
  for (int i = 0; i < n; i++) {
    cin >> cmd;
    if (cmd == "push") {
      cin >> k;
      s.push(k);
    } else if (cmd == "pop") {
      if (s.empty())
        cout << -1 << '\n';
      else {
        cout << s.top() << '\n';
        s.pop();
      }
    } else if (cmd == "size")
      cout << s.size() << '\n';
    else if (cmd == "empty")
      cout << s.empty() << '\n';
    else if (cmd == "top") {
      if (s.empty())
        cout << -1 << '\n';
      else
        cout << s.top() << '\n';
    }
  }
}

일반적인 스택 연산을 수행하는 프로그램을 작성하면 되므로 stack의 멤버 함수를 적극 활용했다.

"push" => push 연산을 수행하면 되므로 push하고자 하는 데이터를 입력받은 후 s.push()를 호출한다.

 

"pop" => 원소를 top에서 꺼낸 후 값을 출력해야 하므로 먼저 s.top()을 출력한 후에 s.pop() 연산을 수행한다.

pop 연산을 하기전에 먼저 스택이 empty인지 확인해야 하므로 s.empty()로 검사한다.

 

"size" => 스택의 크기를 출력하면 되므로 s.size()를 호출하면 된다.

 

"empty" => 스택이 비었는지 확인하면 되므로 s.empty()를 호출하면 된다.

 

"top" => 스택의 top을 출력하는 연산이기 때문에 s.top()을 호출하면 된다.

이때도 마찬가지로 스택이 empty인지 확인해야 하므로 s.empty()로 먼저 검사해야 한다.

 

 

 

 

 

 

'알고리즘' 카테고리의 다른 글

[BOJ] 1874: 스택 수열  (1) 2022.09.28
[BOJ] 10773: 제로  (0) 2022.09.28
[BOJ] 1158: 요세푸스 문제  (0) 2022.09.28
[BOJ] 5397: 키로거  (0) 2022.09.28
[BOJ] 1406: 에디터  (0) 2022.09.28
복사했습니다!