๋ฌธ์ ๋งํฌ
https://www.acmicpc.net/problem/1406
์ฝ๋ ์ ์ถ ๊ธฐ๋ก (๋ฉ๋ชจ๋ฆฌ ๋ฐ ์๊ฐ)
๋ฉ๋ชจ๋ฆฌ : 2808 KB
์๊ฐ : 40 ms
Code
#include <iostream>
#include <stack>
int N;
std::stack <char> left;
std::stack <char> right;
std::stack <char> tmp;
void input_faster()
{
std::ios_base::sync_with_stdio(false);
std::cin.tie(0);
std::cout.tie(0);
}
void input()
{
std::string str;
std::cin >> str;
for(int i = 0; i < str.size() ; i++){
left.push(str[i]);
}
std::cin >> N;
}
void solve()
{
char func;
while (N--){
std::cin >> func;
if (func == 'P'){
char x;
std::cin >> x;
left.push(x);
}
else if (func == 'L'){
if (!left.empty()){
right.push(left.top());
left.pop();
}
}
else if (func == 'B'){
if (!left.empty())
left.pop();
}
else if (func == 'D'){
if (!right.empty()){
left.push(right.top());
right.pop();
}
}
}
}
void print_val()
{
while (!left.empty()){
tmp.push(left.top());
left.pop();
}
while (!tmp.empty()){
std::cout << tmp.top();
tmp.pop();
}
while (!right.empty()){
std::cout << right.top();
right.pop();
}
}
int main()
{
input_faster();
input();
solve();
print_val();
return (0);
}
C++
๋ณต์ฌ
๋ฉ๋ชจ
๋ฌธ์์ด์์ ์ปค์๋ฅผ ์ด๋ํ๊ณ ์ค๊ฐ์ ๋ฌธ์๋ฅผ ์ฝ์
ํ๋ ๊ณผ์ ์ ์ฝ๊ฒ ๋ง๋ค๊ธฐ ์ํด stack ๋๊ฐ๋ฅผ ์ฌ์ฉํ์์ต๋๋ค.
ํธ์์ ๋ ์คํ์ ์ด๋ฆ์ left, right ๋ผ๊ณ ํ๊ณ
์ดํด๋ฅผ ์ํด right ์คํ์ ์ข์ฐ๋ฅผ ๋ฐ์ ํ์ฌ ๊ทธ๋ฆฌ๊ฒ ์ต๋๋ค!
๊ฐ๊ฐ์ ์ฐ์ฐ์ ๊ทธ๋ฆผ์ผ๋ก ํํํ๋ฉด ์๋์ ๊ฐ๊ณ
๊ฐ ์ฐ์ฐ์์ ์คํ์ด ๋น์ด์๋์ง ํ์ธ์ ํ๊ณ ! pop!์ ํ๋๊ฑด ์ ๋ ์์ผ๋ฉด ์๋ฉ๋๋ท! ใ
ใ