관리 메뉴

민우의 코딩노트

10828번 스택 - C++ 본문

Algorithm/BOJ

10828번 스택 - C++

미미누 2022. 7. 16. 17:27

 

[문제]

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

 

10828번: 스택

첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지

www.acmicpc.net

[풀이]

기본적인 스택 풀이 문제이다.

C++ STL 중 하나인 스택의 개념과 사용법을 알아보자.

 

 

1. 스택

스택(Stack)은 대표적인 LIFO(Last In First Out) 구조이다.

즉, 제일 마지막에 넣은 데이터가 처음으로 빠져나오는 구조를 말한다.

 

C++ STL 사용법

> 스택 선언

stack <데이터 타입> 이름으로 스택 선언하기

stack<int> stack;

> 스택에 데이터 추가

stack.push(element)

> 스택 데이터 삭제

스택의 최상위 데이터를 삭제합니다.

stack.pop()

> 스택 최상위 데이터(탑, top) 반환

stack.top()

> 스택 사이즈 반환

stack.size()

> 스택 비어있는지 확인

stack.empty()

> 스택 SWAP: 두 스택의 내용 바꾸기

swap 함수를 이용해 두 스택의 내용을 변경합니다.

swap(stack1 , stack2)

[코드]

#include <bits/stdc++.h>

using namespace std;

int main(){
    int n;
    cin >> n;
    stack<int> S;
    while(n--) {
        string s;
        cin >> s;
        if(s == "push") {
            int num;
            cin >> num;
            S.push(num);
        }
        else if(s == "pop") {
            if(S.empty()) cout << -1 << "\n";
            else {
                cout << S.top() << "\n";
                S.pop();
            }
        }
        else if(s == "size"){ 
            cout << S.size() << "\n";
            
        }
        else if(s == "empty"){
            cout << S.empty() << "\n";
        }
        else if(s == "top"){
            if(S.empty()) cout << -1 << "\n";
            else {
                cout << S.top() << "\n";
            }
        }
    }
}

 

'Algorithm > BOJ' 카테고리의 다른 글

3015번 오아시스 재결합 - C++  (0) 2022.07.24
10773번 제로 - C++  (0) 2022.07.16
백준 2493번 - 탑 C++  (0) 2022.04.23
백준 10807번 - 개수 세기 C++  (0) 2022.04.16
백준 3273번 - 두 수의 합 C++  (0) 2022.04.16