Study hard

(c++)백준 10828번: 스택 본문

백준/여러가지 문제들

(c++)백준 10828번: 스택

Nimgnoej 2020. 6. 11. 22:34

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

 

10828번: 스택

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

www.acmicpc.net

[풀이]

C++ STL의 stack을 사용하여 풀 수 있다.

순서대로 명령을 입력받자마자 그 명령에 해당하는 일을 처리한다.

 

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

void solution() {
	stack<int>s;
	int N, pushNum;
	string str;
	cin >> N;
	for (int i = 0; i < N; i++) {
		cin >> str;
		if (str == "push") {
			//pushNum을 스택에 넣기
			cin >> pushNum;
			s.push(pushNum);
		}
		else if (str == "pop") {
			//스택에 들어있는 정수가 없는 경우 -1 출력
			if (s.empty()) {
				cout << -1 << endl;
				continue;
			}
			//스택 가장 위에 있는 정수 빼고, 그 수 출력
			int Top = s.top();
			cout << Top << endl;
			s.pop();
		}
		else if (str == "size") {
			//스택에 들어있는 정수의 개수 출력
			cout << s.size() << endl;
		}
		else if (str == "empty") {
			//스택이 비어있으면 1, 아니면 0 출력
			if (s.empty())
				cout << 1 << endl;
			else
				cout << 0 << endl;
		}
		else if (str == "top") {
			//스택에 들어있는 정수가 없는 경우 -1 출력
			if (s.empty()) {
				cout << -1 << endl;
				continue;
			}
			//스택의 가장 위에 있는 정수 출력
			cout << s.top() << endl;
		}
	}
}

int main() {
	solution();
	return 0;
}

'백준 > 여러가지 문제들' 카테고리의 다른 글

(c++)백준 10799번: 쇠막대기  (0) 2020.06.12
(c++)백준 9012번: 괄호  (0) 2020.06.12
(c++)백준 11004번: K번째 수  (0) 2020.06.11
(c++)백준 11652번: 카드  (0) 2020.06.11
(c++)백준 10989번: 수 정렬하기 3  (0) 2020.06.11