반응형

https://www.acmicpc.net/problem/1406

 

1406번: 에디터

첫째 줄에는 초기에 편집기에 입력되어 있는 문자열이 주어진다. 이 문자열은 길이가 N이고, 영어 소문자로만 이루어져 있으며, 길이는 100,000을 넘지 않는다. 둘째 줄에는 입력할 명령어의 개수

www.acmicpc.net

 

중간 데이터 삽입 및 삭제 작업을 빠르게 하기 위해 리스트를 이용하여 풀었습니다.

 

#include <iostream>
#include <list>
using namespace std;
int m;
char ch;
list<char> li;
list<char>::iterator it;
int main() {
	while ((m = getchar()) != '\n') li.push_back(m);
	it = li.end();
	scanf("%d", &m);
	while (m--) {
		scanf(" %c", &ch);
		if (ch == 'L') {
			if (it != li.begin()) it--;
		}
		else if (ch == 'D') {
			if(it != li.end()) it++;
		}
		else if (ch == 'B') {
			if (it == li.begin()) continue;
			it--;
			it = li.erase(it);
		}
		else {
			scanf(" %c", &ch);
			it = li.insert(it, ch);
			it++;
		}
	}
	for (it = li.begin(); it != li.end(); it++) printf("%c", *it);
}
반응형

'Algorithm' 카테고리의 다른 글

백준 2504 : 괄호의 값  (0) 2021.11.14
백준 5430 : AC  (0) 2021.11.14
백준 11866 : 요세푸스 문제 0  (0) 2021.11.14
백준 10799 : 쇠막대기  (0) 2021.11.14
백준 2164 : 카드2  (0) 2021.11.14

+ Recent posts