상세 컨텐츠

본문 제목

< 백준 BaekJoon : 28278번 스택 2> C++

C++/Baekjoon

by J2on 2024. 1. 22. 19:49

본문

 

<< 문제 >>

https://www.acmicpc.net/problem/28278

 

28278번: 스택 2

첫째 줄에 명령의 수 N이 주어진다. (1 ≤ N ≤ 1,000,000) 둘째 줄부터 N개 줄에 명령이 하나씩 주어진다. 출력을 요구하는 명령은 하나 이상 주어진다.

www.acmicpc.net

 

 

입력 그대로 구현해주시면 됩니다. 

저는 struct로 대충 stack 구현하고 문제에서 요구하는 동작을 따로 함수를 만들어서 해결했습니다.

 

 

<< 코드 >>

#include <iostream>
using namespace std;

struct myStack {
  int itemNum = -1;
  int item[1000000];
};

int stackAction(myStack &s1, int input) {
  int result = -2;
  switch (input) {
  case 1:
    int temp;
    cin >> temp;
    s1.itemNum++;
    s1.item[s1.itemNum] = temp;
    break;

  case 2:
    if (s1.itemNum == -1) {
      result = -1;
    } else {
      result = s1.item[s1.itemNum];
      s1.itemNum--;
    }
    break;

  case 3:
    result = s1.itemNum + 1;
    break;

  case 4:
    if (s1.itemNum == -1) {
      result = 1;
    } else {
      result = 0;
    }
    break;

  case 5:
    if (s1.itemNum == -1) {
      result = -1;
    } else {
      result = s1.item[s1.itemNum];
    }
    break;
  }
  return result;
}

int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(nullptr);
  cout.tie(nullptr);

  myStack s1;

  int num;
  cin >> num;

  int input;
  int result;
  for (int i = 0; i < num; i++) {
    cin >> input;
    result = stackAction(s1, input);
    if (result != -2) {
      cout << result << '\n';
    }
  }
}

 

 

 

 

 

 

관련글 더보기

댓글 영역