문제 링크입니다: https://www.acmicpc.net/problem/1406
시간 제한이 0.3초 밖에 되지 않아서 스택으로 풀 수 있을지 긴가민가했지만 간단히 AC를 받을 수 있었습니다.
백준 5397번 키로거(http://jaimemin.tistory.com/824)와 비슷하게 풀면 됩니다.
#include <iostream>
#include <string>
#include <stack>
using namespace std;
stack<char> head, tail; //커서 왼쪽, 오른쪽
int main(void)
{
ios_base::sync_with_stdio(0);
cin.tie(0);
string s;
cin >> s;
for (int i = 0; i < s.length(); i++)
head.push(s[i]);
int N;
cin >> N;
for (int i = 0; i < N; i++)
{
char op;
cin >> op;
//커서 왼쪽
if (op == 'L')
{
if (!head.empty())
{
tail.push(head.top());
head.pop();
}
}
//커서 오른쪽
else if (op == 'D')
{
if (!tail.empty())
{
head.push(tail.top());
tail.pop();
}
}
//커서 왼쪽 문자 삭제
else if (op == 'B')
{
if (!head.empty())
head.pop();
}
//커서 왼쪽에 문자 추가
else
{
char c;
cin >> c;
head.push(c);
}
}
while (!head.empty())
{
tail.push(head.top());
head.pop();
}
string result;
while (!tail.empty())
{
result += tail.top();
tail.pop();
}
cout << result << "\n";
return 0;
}
개발환경:Visual Studio 2017
지적, 조언, 질문 환영입니다! 댓글 남겨주세요~
'알고리즘 > BOJ' 카테고리의 다른 글
백준 16167번 A Great Way (0) | 2019.01.06 |
---|---|
백준 1261번 알고스팟 (2) | 2019.01.03 |
백준 2268번 수들의 합 (0) | 2019.01.03 |
백준 2588번 곱셈 (0) | 2019.01.03 |
백준 2740번 행렬 곱셈 (0) | 2019.01.03 |