더듬이의 헬로월드

Hello, World!

알고리즘 풀이/백준,BOJ [코드플러스]

[백준/자료구조 1/C++] 10828-스택

더듬이 2021. 9. 2. 21:17
728x90

난이도

Silver4


문제집 링크

https://www.acmicpc.net/workbook/view/3953

문제 링크

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

 

10828번: 스택

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

www.acmicpc.net


문제 해결 과정

C++의 STL을 이용하여 스택을 구현하여 해결했다.

stack 라이브러리의 함수들을 알고 있다면 어렵지 않게 풀 수 있었다.


주의할 점

1.pop이나 top함수 호풀시 스택이 비어있다면 오류가 발생하므로 꼭 empty를 이용해 검사하자!


코드

#include <iostream>
#include <stack>

using namespace std;

int main()
{
	stack<int> BOJstack;
	
	int repeat;
	cin >> repeat;
	//명령의 수만큼 반복

	for (int i = 0; i < repeat;i++) {
		int number;
		string cmd;
		cin >> cmd; 
//명령어 입력 받음
		if (cmd == "push") {
			cin >> number;
			BOJstack.push(number);
		}
		else if (cmd == "pop") {
			if (BOJstack.empty()) cout << -1 << "\n";
			else {
				cout << BOJstack.top() << "\n";
				BOJstack.pop();
                //반드시 top연산이 먼저 와야 함
			}
		}
		else if (cmd == "size") {
			cout << BOJstack.size() << "\n";
		}
		else if (cmd == "empty") {
			cout << BOJstack.empty() << "\n";
		}
		else if (cmd == "top") {
			if (BOJstack.empty()) cout << -1 << "\n";
			else 	cout << BOJstack.top() << "\n";
            //반드시 비어있는지 검사
		}
	}
}


잘못된 부분이나 오해할 수 있는 부분이 있다면 언제든지 

댓글 남겨주시기 바랍니다!

728x90