Memo
스택 두개를 써서 문자를 집어넣는다!
마지막에 모든 동작이 끝나면 tmp에 str의 남은 모든 문자를 집어넣고 하나씩 출력한다!
Code
제출 날짜
@4/8/2021
메모리
2940 KB
시간
44 ms
#include <iostream>
#include <stack>
std::string str;
std::stack<char> res;
std::stack<char> tmp;
int N;
void output()
{
while(!tmp.empty())
{
std::cout << tmp.top();
tmp.pop();
}
}
void solution()
{
char c;
for (int i = 0; i < N; ++i)
{
std::cin >> c;
if (c == 'P')
{
std::cin >> c;
res.push(c);
}
else if (c == 'B' && !res.empty())
{
res.pop();
}
else if (c == 'L' && !res.empty())
{
tmp.push(res.top());
res.pop();
}
else if (c == 'D' && !tmp.empty())
{
res.push(tmp.top());
tmp.pop();
}
}
while (!res.empty())
{
tmp.push(res.top());
res.pop();
}
}
void input()
{
std::cin >> str;
std::cin >> N;
for (size_t i = 0; i < str.size(); ++i)
res.push(str[i]);
}
void preset()
{
std::ios_base::sync_with_stdio(false);
std::cin.tie(NULL);
std::cout.tie(NULL);
}
int main()
{
preset();
input();
solution();
output();
}
C++
복사