10828번: 스택
첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지
www.acmicpc.net
먼저 스택을 불러와주는 <stack> 헤더파일을 불러와줌
[C++][STL] Stack 기본 사용법 및 예제 (tistory.com)
[C++][STL] Stack 기본 사용법 및 예제
인트로 오늘은 C++의 STL중 하나인 Stack(스택) 기본 함수에 대해서 알아보도록 하겠습니다. 목차 1. 스택(Stack)이란? 2. 스택 헤더 파일 3. 스택 기본 함수 1. 스택이란? 스택(Stack)은 대표적인 LIFO(Last In
life-with-coding.tistory.com
이렇게 첫 코드를 작성했는 데,
첫번째 출력은 잘 나왔는데
두번째 출력은 -1에서 멈춤
#include <stack>
#include <string>
#include <iostream>
using namespace std;
int main()
{
int n, p, pop;
stack<int> stack;
string s;
cin >> n;
for(int i=0; i<n; i++){
cin >> s;
if(s== "push"){
cin >> p;
stack.push(p);
}
else if(s=="pop"){
if(stack.empty()) cout << "-1\n";
else{
pop = stack.top();
cout << pop << "\n";
stack.pop();
}
}
else if(s=="size"){
cout << stack.size() << "\n";
}
else if(s=="empty"){
cout << stack.empty() << "\n";
}
else if(s=="top"){
cout << stack.top() << "\n";
}
}
return 0;
}
<stack>에서 empty()는 비어 있으면 true, 비어 있지 않으면 false를 반환함
top()은 가장 상단의 원소를 반환하기 때문에 사용하기 전에 empty()를 통해서 먼저 비어 있는 스택이 아닌지 확인해줘야 함
따라서 empty랑 top을 바꿔주니까 성공했다
성공한 코드는
#include <stack>
#include <string>
#include <iostream>
using namespace std;
int main()
{
int n, p, pop;
stack<int> stack;
string s;
cin >> n;
for(int i=0; i<n; i++){
cin >> s;
if(s== "push"){
cin >> p;
stack.push(p);
}
else if(s=="pop"){
if(stack.empty()) cout << "-1\n";
else{
pop = stack.top();
cout << pop << "\n";
stack.pop();
}
}
else if(s=="size"){
cout << stack.size() << "\n";
}
else if(s=="empty"){
if(stack.empty() ) cout << "1\n";
else cout<< "0\n";
}
else if(s=="top"){
if(stack.empty()) cout << "-1\n";
else cout << stack.top() << "\n";
}
}
return 0;
}
'‡ CODING TEST STUDY ‡ > º 백준' 카테고리의 다른 글
[백준 10773번 C++] 제로 (0) | 2023.09.09 |
---|---|
[백준 9012번 C++] 괄호 (0) | 2023.09.09 |
[백준 17087번 C++] 숨바꼭질 6 (0) | 2023.09.02 |
[백준 10974번 C++] 모든 순열 (0) | 2023.09.01 |
[백준 2981번 C++] 검문 (0) | 2023.09.01 |