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";
//반드시 비어있는지 검사
}
}
}
잘못된 부분이나 오해할 수 있는 부분이 있다면 언제든지
댓글 남겨주시기 바랍니다!
![](https://t1.daumcdn.net/keditor/emoticon/niniz/large/006.gif)
728x90
'알고리즘 풀이 > 백준,BOJ [코드플러스]' 카테고리의 다른 글
[백준/자료구조 1/C++] 1874 - 스택 수열 (0) | 2021.09.27 |
---|---|
[백준/자료구조 1/C++] 1406-에디터 (0) | 2021.09.14 |
[백준/자료구조 1/C++] 9012-괄호 (0) | 2021.09.04 |
[백준/자료구조 1/C++] 9093-단어 뒤집기 (0) | 2021.09.02 |