컴굥일지

[BOJ/백준 10828][C++] 스택 본문

알고리즘/코테 문제

[BOJ/백준 10828][C++] 스택

gyong 2022. 4. 8. 22:23
반응형

문제

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

백준 10828

백준 10828

 

문제 내용

Stack을 사용할 때 쓰는 함수들을 쓰면 된다.

Stack STL을 사용할 줄 안다면 쉽게 풀 수 있다.

 

문제 풀이

5가지 명령 중에 명령 그대로 함수를 쓰면 안 되는 것이 2가지 있다.

바로 pop()과 top()이다.

이 두 함수는 사용하기 전에 stack이 비어있는지 반드시 확인해야 한다.

 

코드

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

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

	//입력
	int n,tmp;
	cin >> n;
	stack<int> ss;
	string str;

	//문제 해결
	for (int i = 0; i < n; i++) {
		cin >> str;
		if (str == "push") {
			cin >> tmp;
			ss.push(tmp);
		}
		else if (str == "pop") {
			if (ss.empty()) cout << -1 << '\n';
			else {
				cout << ss.top() << '\n';
				ss.pop();
			}
		}
		else if (str == "size") {
			cout << ss.size() << '\n';
		}
		else if (str == "empty") {
			if (ss.empty()) cout << 1 << '\n';
			else cout << 0 << '\n';
		}
		else if (str == "top") {
			if (ss.empty()) cout << -1 << '\n';
			else {
				cout << ss.top() << '\n';
			}
		}
	}
}

 

문제 코드 설명

stack<int> ss; 로 이름이 ss인 스택을 선언했다.

 

1) push()

ss.push(element)를 하면 element가 스택에 저장된다.

 

2) pop()

ss.pop()을 하면 스택에 저장된 가장 마지막 원소가 제거된다.

 

3) size()

ss.size()를 하면 스택에 몇 개의 원소가 있는지 반환된다.

 

4) empty()

ss.empty()를 하면 스택이 비어있는지의 여부가 반환된다.

 

5) top()

ss.top()을 하면 스택에 저장된 가장 마지막 원소가 반환된다.

반응형
Comments