C++ STL stack ์ ์ฌ์ฉํด์ ์คํ์ ๊ตฌํํ๋ค.
์ ๋ ฅ ์ push์์ whitespace ๋ค์ ์ซ์๊ฐ ์ค๊ธฐ ๋๋ฌธ์ getline()์ผ๋ก ์ ๋ ฅ๋ฐ์๊ณ , std::cin >> std::ws ์ผ๋ก newline์ ๋ฌด์ํ๊ณ ์ํฐ ์ ๋ค์ ์คํธ๋ง์ ์ ๋ ฅ๋ฐ๋๋ก ํ๋ค.
switch๋ฌธ์์ p ๋ฌธ์์ธ ๊ฒฝ์ฐ์์ ๋ ๋ฒ์งธ ๋ฌธ์๋ก push์ pop ๊ตฌ๋ถํ๋ค.
์คํ์ด ๋น์ด์๋ ์ฌ๋ถ์ ๋ํด์๋ ์ผํญ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํด์ ์ถ๋ ฅํ๋ค.
#include <bits/stdc++.h>
using namespace std;
int main(){
stack<int> s;
int N;
scanf("%d", &N); // N: # of instructions
for(int i=0; i<N; i++){
string str;
getline(cin >> std::ws, str);
switch(str[0]){
case 'p':
{
if(str[1] == 'u') s.push(stoi(str.substr(str.find(" ")+1)));
else{
if(s.empty()) cout << -1 << endl;
else{
cout << s.top() << endl;
s.pop();
}
}
}
break;
case 's':
cout << s.size() << endl;
break;
case 'e':
cout << (s.empty() ? 1 : 0) << endl;
break;
case 't':
cout << (s.empty() ? -1 : s.top()) << endl;
break;
}
}
}
[๋ฐฑ์ค(BOJ)] 10866๋ฒ: ๋ฑ (๋ฑ(deque), C++) (0) | 2021.08.07 |
---|---|
[๋ฐฑ์ค(BOJ)] 10828๋ฒ: ํ (ํ, C++) (0) | 2021.08.07 |
[๋ฐฑ์ค(BOJ)] 11652๋ฒ: ์นด๋ (์ ๋ ฌ, C++) (0) | 2021.08.06 |
[๋ฐฑ์ค(BOJ)] 10989๋ฒ: ์ ์ ๋ ฌํ๊ธฐ 3 (์ ๋ ฌ, C++) (0) | 2021.08.06 |
[๋ฐฑ์ค(BOJ)] 11004๋ฒ: K๋ฒ์งธ ์ (์ ๋ ฌ, C++) (0) | 2021.08.04 |