< [C++/백준 1874번] 에디터

프로그래밍 공부/백준 (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;
}