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;
}
'프로그래밍 공부 > 백준 (C++)' 카테고리의 다른 글
[C++/백준 1158번] 요세푸스 문제 (0) | 2024.10.12 |
---|---|
[C++/백준 10845번] 큐 (0) | 2024.10.12 |
[C++/백준 1874번] 스택 수열 (0) | 2024.10.11 |
[C++/백준 9093번] 괄호 (0) | 2024.10.11 |
[C++/백준 9093번] 단어 뒤집기 (0) | 2024.10.11 |