Algorithm/백준과 프로그래머스

[C++] 10828. 스택

young_3060 2023. 7. 11. 10:50
728x90

 

간단하게 스택을 구현하면 되는 문제로, 배열을 써서 풀었고 STL stack을 사용한 간단한 버전도 올려놨다.

 

[1차원 배열 이용]

#include <iostream>
using namespace std;

void push(int value);
void pop();
void size();
void empty();
void top();

int N;
int top_v = -1;
int myStack[100000];

int main(void) {
    ios::sync_with_stdio(false);
    cin.tie(NULL);
    cout.tie(NULL);

    string com;
    cin >> N;
    for(int i=0; i<N; i++) {
        cin >> com;
        if(com == "push") {
            int x;
            cin >> x;
            push(x);
        }
        else if(com == "pop") pop();
        else if(com == "size") size();
        else if(com == "empty") empty();
        else if(com == "top") top();
    }

    return 0;
}


void push(int value) {
    if(top_v >= N-1) return;
    else {
        top_v++;
        myStack[top_v] = value;
    }
}
void pop() {
    if(top_v <= -1) cout << "-1" << "\n";
    else
        cout << myStack[top_v--] << "\n";
}
void size() {
    cout << top_v + 1 << "\n";
}
void empty() {
    if(top_v<=-1) cout << "1" << "\n";
    else cout << "0" << "\n";
}
void top() {
    if(top_v<=-1) cout << "-1" << "\n";
    else cout << myStack[top_v] << "\n";
}

 

[STL stack 이용]

#include <iostream>
#include <stack>
using namespace std;

int main(void) {
    ios::sync_with_stdio(false);
    cin.tie(NULL);
    cout.tie(NULL);
    
 	stack<int> s;
    int N;
    string com;
    
    cin >> N;
    
    for(int i=0; i<N; i++) {
    	cin >> com;
        if(com == "push") {
            int x;
            cin >> x;
            s.push(x);
        }
        else if(com == "pop") {
        	if(!s.empty()) { cout << s.top() << "\n"; s.pop(); }
            else cout << "-1" << "\n";
        else if(com == "size") cout << s.size() << "\n";
        else if(com == "empty") {
        	if(s.empty()) cout << "0" << "\n";
            else cout << "-1" << "\n";
        }
        else if(com == "top") {
        if(!s.empty()) cout << s.top() << "\n";
        else cout << "-1" << "\n";
        }
    }
	return 0;
}
728x90

'Algorithm > 백준과 프로그래머스' 카테고리의 다른 글

[C++] 1158. 요세푸스  (0) 2023.07.15
[C++] 9012. 괄호  (0) 2023.07.14
[C++] 2751. 수 정렬하기 2  (0) 2023.07.06
[C++] 11728 : 배열 합치기  (0) 2022.04.12
[C++] 2193 : 이친수  (0) 2022.04.12