문제 링크 : https://www.acmicpc.net/problem/1406
풀이
C++의 STL List 라이브러리를 사용하여 풀이하였다. 연결 리스트로 풀면 실버2 문제치곤 어렵지 않게 해결할 수 있다.
백준 5397번 키로그와 거의 동일한 문제여서 동일하게 풀이를 하면 된다.
#include <iostream>
#include <list>
using namespace std;
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
string s;
cin >> s;
list<char> L;
for (auto c : s) L.push_back(c);
auto cursor = L.end(); // 제일 오른쪽으로 cur 두기
int q;
cin >> q;
while (q--) {
char op;
cin >> op;
if (op == 'P') {
char add;
cin >> add;
L.insert(cursor, add);
}
else if (op == 'L') {
if (cursor != L.begin()) cursor--; // 제일 왼쪽이면 해당 명령 무시
}
else if (op == 'D') {
if (cursor != L.end()) cursor++; // 제일 오른쪽이면 해당 명령 무시
}
else {
if (cursor != L.begin()) { // 제일 왼쪽이면 해당 명령 무시
cursor--; // 커서 위치의 왼쪽 글자를 삭제하기 위해 이동
L.erase(cursor++); // 삭제 후 원위치로
}
}
}
for (auto c : L) cout << c;
}
'알고리즘 > 알고리즘 문제 풀이' 카테고리의 다른 글
(C++) 백준 2841번 - 외계인의 기타 연주 (0) | 2023.03.21 |
---|---|
(C++) 백준 2493번 - 탑 (0) | 2023.03.17 |
(C++) 백준 5397번 - 키로거 (0) | 2023.03.16 |
(Python) 백준 1966번 - 프린터 큐 (0) | 2023.01.13 |
(Python) 백준 1929번 - 소수 구하기 (0) | 2023.01.11 |