풀이
리스트를 통해 구현할 수 있는 문제입니다.
처음에 단순히 string 배열을 통해 구현했었는데
문자열이 복사되는 과정에서 시간을 많이 잡아먹어 시간 초과가 났었습니다.
#include<iostream>
#include<list>
using namespace std;
int main(void)
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
string s;
int m;
cin >> s >> m;
list<char> editor(s.begin(), s.end());
auto cursor = editor.end();
for (int i = 0; i < m; i++) {
char c; cin >> c;
if (c == 'L' && cursor != editor.begin()) cursor--;
if (c == 'D' && cursor != editor.end()) cursor++;
if (c == 'B' && cursor != editor.begin()) cursor = editor.erase(--cursor);
if (c == 'P') {
char x; cin >> x;
editor.insert(cursor, x);
}
}
for (const auto& i : editor) cout << i;
return 0;
}
반례
Input
yyy
10
B
B
L
D
P y
P y
P y
B
L
D
Output
yyy
Input
abcdefg
15
B
L
B
B
P z
P x
B
L
D
P y
L
D
B
P p
B
Output
abczf
'알고리즘 > 백준' 카테고리의 다른 글
[백준/C,C++] 10026번: 적록색약 (0) | 2021.04.21 |
---|---|
[백준/C,C++] 7562번: 나이트의 이동 (0) | 2021.04.21 |
[백준/C,C++] 2812번: 크게 만들기 (0) | 2021.04.20 |
[백준/C,C++] 1049번: 기타줄 (0) | 2021.04.20 |
[백준/C,C++] 10815번: 숫자 카드 (0) | 2021.04.20 |
댓글