๋ฌธ์ :
๋ถ์ :
<stack> ์ ์ฌ์ฉํ์ฌ ๋น๊ต์ ์ฝ๊ฒ ํ ์ ์์๋ ๋ฌธ์ ์๋ค. ๋ค๋ง ์ฒ์์ผ๋ก segmentation fault ์ปดํ์ผ ์๋ฌ๊ฐ ๋ด๋๋ฐ top ๋ถ๋ถ์ empty ์กฐ๊ฑด์ ๊ฒ์ฌํ์ง ์์์ ๋ ๋ฌธ์ ์๋ค. ์ ์๋ ๋ฌธ์ ๋ฅผ ์์ผ๋ก ๋ ์ ์ฝ์ด์ผ๊ฒ ๋ค. ๊ทธ๋ฆฌ๊ณ ์ฒ์์ผ๋ก cin ์ด ๊ณต๋ฐฑ ๊ธฐ์ค์ผ๋ก ๋ถ๋ฆฌํด ์ฝ๋๋ค๋ ์ ์ ์๊ฒ ๋์๋ค. ์ด๋ฅผ ์ํด getline ํจ์๋ฅผ ์ฌ์ฉํด์ผ ํ๊ณ cin ๊ณผ getline์ ๊ฒธ์ฉํด์ ์ฐ๋ฉด ์๋ฌ๊ฐ ๋ ์ ์๋๋ฐ ์ด๋ cin ์ฝ๋ ๋ค ignore ๋ฅผ ๋ถ์ฌ์ฃผ๋ฉด ํด๊ฒฐ ๋๋ค๋ ์ ์ ์๊ฒ ๋์๋ค.
c++ ์ฝ๋ :
//
// 10828_stack.cpp
// SOMA๐ฉ๐ป๐ป
//
// Created by JoSoJeong on 2021/02/06.
//
#include <string>
#include <string.h>
#include <iostream>
#include <stack>
using namespace std;
int main(void){
int n;
cin >> n;
string s;
stack<int> arr;
for(int i=0; i< n; i++){
cin >> s;
if(s == "push"){
int num;
cin >> num;
arr.push(num);
}else if(s == "top"){
if(arr.empty()){
cout << "-1" << endl;
}else {
cout << arr.top() << endl;
}
}else if(s == "size"){
cout << arr.size() << endl;
}else if(s == "empty"){
if(arr.empty()){
cout << "1" << endl;
}else{
cout << "0" << endl;
}
//cout << (arr.empty() ? 1 : 0) << endl;
}else if(s == "pop"){
if(arr.empty()){
cout << "-1" << endl;
}else{
cout << arr.top() << endl;
arr.pop();
}
}
}
return 0;
}
'Algorithm๐ฐ > ๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] 2110 ๊ณต์ ๊ธฐ ์ค์น (0) | 2021.02.16 |
---|---|
[๋ฐฑ์ค] 2252 ์ค์ธ์ฐ๊ธฐ (0) | 2021.02.14 |
[๋ฐฑ์ค] 1915 ๊ฐ์ฅ ํฐ ์ ์ฌ๊ฐํ DP (0) | 2021.02.05 |
[๋ฐฑ์ค] 1987 ์ํ๋ฒณ DFS (0) | 2021.02.05 |
[๋ฐฑ์ค] 2470 ๋์ฉ์ก ์ด๋ถํ์ (0) | 2021.02.05 |
๋๊ธ