프로그래밍 공부/백준 (C++)
[C++/백준 1874번] 에디터
Rocketbabydolls
2024. 10. 12. 15:17
erase() -> 리스트에서는 iterator의 소실이 일어난다. 따라서 반환값을 사용해야 함. (반환값 == 삭제한 원소의 다음 iter)
#include <iostream>
#include <list>
using namespace std;
list <char> l;
int main() {
string input;
cin >> input;
for (int i = 0; i < input.length(); i++)
{
l.push_back(input[i]);
}
int M;
cin >> M;
list<char>::iterator it;
it = l.end();
for (int i = 0; i < M; i++)
{
char input_char;
cin >> input_char;
if (input_char == 'L')
{
if (!(it == l.begin()))
{
it--;
}
}
if (input_char == 'D')
{
if (!(it == l.end()))
it++;
}
if (input_char == 'B')
{
if(!(it == l.begin()))
it = l.erase(--it);
}
if (input_char == 'P')
{
char chr;
cin >> chr;
l.insert(it, chr);
}
}
for (auto it : l)
cout << it;
return 0;
}