Programming/Baekjoon

백준 1406 c++ 주석포함

fishersheep 2022. 1. 30. 19:40
반응형

백준: 에디터

#include <iostream>
#include <algorithm>
#include <vector>
#include <string>
#include <list>

using namespace std;

int main()
{
	ios::sync_with_stdio(false);
	cin.tie(NULL);
	cout.tie(NULL);

	string str;	//초기입력을 저장할 문자열
	int m;	//명령어의 개수를 저장할 변수
	list<char> chlist;	//리스트 선언
	char input;	//명령어 입력을 할 변수
	char temp;	

	cin >> str;
	cin >> m;

	for (int i = 0; i < str.length(); i++)	//초기문자열을 list에 저장
		chlist.push_back(str[i]);
		
	list<char>::iterator it = chlist.end();	//iterator를 사용하여 list의 원소들에 접근, 초기위치는 리스트의 맨뒤


	for (int i = 0; i < m; i++)	//명령어의 개수만큼 반복
	{
		cin >> input;	//명령어 입력

		if (input == 'P')	
		{
			cin >> temp;	//추가할 문자입력
			chlist.insert(it, temp);	//iterator의 위치의 문자 추가
		}
		else if (input == 'L')
		{
			if(it!=chlist.begin())	//iterator가 맨 앞이 아니라면
				it--;	//iterator를 왼쪽으로 한칸 이동
		}
		else if (input == 'D')
		{
			if (it != chlist.end())	//iterator가 맨 뒤가 아니라면
				it++;	//iterator를 오른쪽으로 한칸 이동
		}
		else if (input == 'B')
		{
			if (it != chlist.begin())	//iterator가 맨 앞이 아니라면
			{
				it = chlist.erase(--it);	//커서왼쪽에 문자를 삭제
			}
		}

	}

	for (it = chlist.begin(); it != chlist.end(); it++)	//결과값출력
		cout << *it;


	return 0;
}

 

반응형

'Programming > Baekjoon' 카테고리의 다른 글

백준 1934 c++ 주석포함  (0) 2022.02.01
백준 1158 c++ 주석포함  (0) 2022.01.31
백준 10824 c++ 주석포함  (0) 2022.01.30
백준 11655 c++ 주석포함  (0) 2022.01.30
백준 10809 c++ 주석포함  (0) 2022.01.30