문제
한 줄로 된 간단한 에디터를 구현하려고 한다. 이 편집기는 영어 소문자만을 기록할 수 있는 편집기로, 최대 600,000글자까지 입력할 수 있다.
이 편집기에는 '커서'라는 것이 있는데, 커서는 문장의 맨 앞(첫 번째 문자의 왼쪽), 문장의 맨 뒤(마지막 문자의 오른쪽), 또는 문장 중간 임의의 곳(모든 연속된 두 문자 사이)에 위치할 수 있다. 즉 길이가 L인 문자열이 현재 편집기에 입력되어 있으면, 커서가 위치할 수 있는 곳은 L+1가지 경우가 있다.
이 편집기가 지원하는 명령어는 다음과 같다.
| L |
커서를 왼쪽으로 한 칸 옮김 (커서가 문장의 맨 앞이면 무시됨) |
| D |
커서를 오른쪽으로 한 칸 옮김 (커서가 문장의 맨 뒤이면 무시됨) |
| B |
커서 왼쪽에 있는 문자를 삭제함 (커서가 문장의 맨 앞이면 무시됨)
삭제로 인해 커서는 한 칸 왼쪽으로 이동한 것처럼 나타나지만, 실제로 커서의 오른쪽에 있던 문자는 그대로임 |
| P \$ |
\$라는 문자를 커서 왼쪽에 추가함 |
초기에 편집기에 입력되어 있는 문자열이 주어지고, 그 이후 입력한 명령어가 차례로 주어졌을 때, 모든 명령어를 수행하고 난 후 편집기에 입력되어 있는 문자열을 구하는 프로그램을 작성하시오. 단, 명령어가 수행되기 전에 커서는 문장의 맨 뒤에 위치하고 있다고 한다.
출력
첫째 줄에 모든 명령어를 수행하고 난 후 편집기에 입력되어 있는 문자열을 출력한다.
W3sicHJvYmxlbV9pZCI6IjE0MDYiLCJwcm9ibGVtX2xhbmciOiIwIiwidGl0bGUiOiJcdWM1ZDBcdWI1MTRcdWQxMzAiLCJkZXNjcmlwdGlvbiI6IjxwPlx1ZDU1YyBcdWM5MDRcdWI4NWMgXHViNDFjIFx1YWMwNFx1YjJlOFx1ZDU1YyBcdWM1ZDBcdWI1MTRcdWQxMzBcdWI5N2MgXHVhZDZjXHVkNjA0XHVkNTU4XHViODI0XHVhY2UwIFx1ZDU1Y1x1YjJlNC4gXHVjNzc0IFx1ZDNiOFx1YzlkMVx1YWUzMFx1YjI5NCBcdWM2MDFcdWM1YjQgXHVjMThjXHViYjM4XHVjNzkwXHViOWNjXHVjNzQ0IFx1YWUzMFx1Yjg1ZFx1ZDU2MCBcdWMyMTggXHVjNzg4XHViMjk0IFx1ZDNiOFx1YzlkMVx1YWUzMFx1Yjg1YywgXHVjZDVjXHViMzAwIDYwMCwwMDBcdWFlMDBcdWM3OTBcdWFlNGNcdWM5YzAgXHVjNzg1XHViODI1XHVkNTYwIFx1YzIxOCBcdWM3ODhcdWIyZTQuPFwvcD5cclxuXHJcbjxwPlx1Yzc3NCBcdWQzYjhcdWM5ZDFcdWFlMzBcdWM1ZDBcdWIyOTQgJiMzOTtcdWNlZTRcdWMxMWMmIzM5O1x1Yjc3Y1x1YjI5NCBcdWFjODNcdWM3NzQgXHVjNzg4XHViMjk0XHViMzcwLCBcdWNlZTRcdWMxMWNcdWIyOTQgXHViYjM4XHVjN2E1XHVjNzU4IFx1YjllOCBcdWM1NWUoXHVjY2FiIFx1YmM4OFx1YzlmOCBcdWJiMzhcdWM3OTBcdWM3NTggXHVjNjdjXHVjYWJkKSwgXHViYjM4XHVjN2E1XHVjNzU4IFx1YjllOCBcdWI0YTQoXHViOWM4XHVjOWMwXHViOWM5IFx1YmIzOFx1Yzc5MFx1Yzc1OCBcdWM2MjRcdWI5NzhcdWNhYmQpLCBcdWI2MTBcdWIyOTQgXHViYjM4XHVjN2E1IFx1YzkxMVx1YWMwNCBcdWM3ODRcdWM3NThcdWM3NTggXHVhY2YzKFx1YmFhOFx1YjRlMCBcdWM1ZjBcdWMxOGRcdWI0MWMgXHViNDUwIFx1YmIzOFx1Yzc5MCBcdWMwYWNcdWM3NzQpXHVjNWQwIFx1YzcwNFx1Y2U1OFx1ZDU2MCBcdWMyMTggXHVjNzg4XHViMmU0LiBcdWM5ODkgXHVhZTM4XHVjNzc0XHVhYzAwIExcdWM3NzggXHViYjM4XHVjNzkwXHVjNWY0XHVjNzc0IFx1ZDYwNFx1YzdhYyBcdWQzYjhcdWM5ZDFcdWFlMzBcdWM1ZDAgXHVjNzg1XHViODI1XHViNDE4XHVjNWI0IFx1Yzc4OFx1YzczY1x1YmE3NCwgXHVjZWU0XHVjMTFjXHVhYzAwIFx1YzcwNFx1Y2U1OFx1ZDU2MCBcdWMyMTggXHVjNzg4XHViMjk0IFx1YWNmM1x1Yzc0MCBMKzFcdWFjMDBcdWM5YzAgXHVhY2JkXHVjNmIwXHVhYzAwIFx1Yzc4OFx1YjJlNC48XC9wPlxyXG5cclxuPHA+XHVjNzc0IFx1ZDNiOFx1YzlkMVx1YWUzMFx1YWMwMCBcdWM5YzBcdWM2ZDBcdWQ1NThcdWIyOTQgXHViYTg1XHViODM5XHVjNWI0XHViMjk0IFx1YjJlNFx1Yzc0Y1x1YWNmYyBcdWFjMTlcdWIyZTQuPFwvcD5cclxuXHJcbjx0YWJsZSBjbGFzcz1cInRhYmxlIHRhYmxlLWJvcmRlcmVkXCIgc3R5bGU9XCJ3aWR0aDoxMDAlXCI+XHJcblx0PHRib2R5PlxyXG5cdFx0PHRyPlxyXG5cdFx0XHQ8dGggc3R5bGU9XCJ3aWR0aDoyMCVcIj5MPFwvdGg+XHJcblx0XHRcdDx0ZCBzdHlsZT1cIndpZHRoOjgwJVwiPlx1Y2VlNFx1YzExY1x1Yjk3YyBcdWM2N2NcdWNhYmRcdWM3M2NcdWI4NWMgXHVkNTVjIFx1Y2U3OCBcdWM2MmVcdWFlNDAgKFx1Y2VlNFx1YzExY1x1YWMwMCBcdWJiMzhcdWM3YTVcdWM3NTggXHViOWU4IFx1YzU1ZVx1Yzc3NFx1YmE3NCBcdWJiMzRcdWMyZGNcdWI0MjgpPFwvdGQ+XHJcblx0XHQ8XC90cj5cclxuXHRcdDx0cj5cclxuXHRcdFx0PHRoPkQ8XC90aD5cclxuXHRcdFx0PHRkPlx1Y2VlNFx1YzExY1x1Yjk3YyBcdWM2MjRcdWI5NzhcdWNhYmRcdWM3M2NcdWI4NWMgXHVkNTVjIFx1Y2U3OCBcdWM2MmVcdWFlNDAgKFx1Y2VlNFx1YzExY1x1YWMwMCBcdWJiMzhcdWM3YTVcdWM3NTggXHViOWU4IFx1YjRhNFx1Yzc3NFx1YmE3NCBcdWJiMzRcdWMyZGNcdWI0MjgpPFwvdGQ+XHJcblx0XHQ8XC90cj5cclxuXHRcdDx0cj5cclxuXHRcdFx0PHRoPkI8XC90aD5cclxuXHRcdFx0PHRkPlx1Y2VlNFx1YzExYyBcdWM2N2NcdWNhYmRcdWM1ZDAgXHVjNzg4XHViMjk0IFx1YmIzOFx1Yzc5MFx1Yjk3YyBcdWMwYWRcdWM4MWNcdWQ1NjggKFx1Y2VlNFx1YzExY1x1YWMwMCBcdWJiMzhcdWM3YTVcdWM3NTggXHViOWU4IFx1YzU1ZVx1Yzc3NFx1YmE3NCBcdWJiMzRcdWMyZGNcdWI0MjgpPGJyIFwvPlxyXG5cdFx0XHRcdWMwYWRcdWM4MWNcdWI4NWMgXHVjNzc4XHVkNTc0IFx1Y2VlNFx1YzExY1x1YjI5NCBcdWQ1NWMgXHVjZTc4IFx1YzY3Y1x1Y2FiZFx1YzczY1x1Yjg1YyBcdWM3NzRcdWIzZDlcdWQ1NWMgXHVhYzgzXHVjYzk4XHViN2ZjIFx1YjA5OFx1ZDBjMFx1YjA5OFx1YzljMFx1YjljYywgXHVjMmU0XHVjODFjXHViODVjIFx1Y2VlNFx1YzExY1x1Yzc1OCBcdWM2MjRcdWI5NzhcdWNhYmRcdWM1ZDAgXHVjNzg4XHViMzU4IFx1YmIzOFx1Yzc5MFx1YjI5NCBcdWFkZjhcdWIzMDBcdWI4NWNcdWM3ODQ8XC90ZD5cclxuXHRcdDxcL3RyPlxyXG5cdFx0PHRyPlxyXG5cdFx0XHQ8dGg+UCBcXCQ8XC90aD5cclxuXHRcdFx0PHRkPlxcJFx1Yjc3Y1x1YjI5NCBcdWJiMzhcdWM3OTBcdWI5N2MgXHVjZWU0XHVjMTFjIFx1YzY3Y1x1Y2FiZFx1YzVkMCBcdWNkOTRcdWFjMDBcdWQ1Njg8XC90ZD5cclxuXHRcdDxcL3RyPlxyXG5cdDxcL3Rib2R5PlxyXG48XC90YWJsZT5cclxuXHJcbjxwPlx1Y2QwOFx1YWUzMFx1YzVkMCBcdWQzYjhcdWM5ZDFcdWFlMzBcdWM1ZDAgXHVjNzg1XHViODI1XHViNDE4XHVjNWI0IFx1Yzc4OFx1YjI5NCBcdWJiMzhcdWM3OTBcdWM1ZjRcdWM3NzQgXHVjOGZjXHVjNWI0XHVjOWMwXHVhY2UwLCBcdWFkZjggXHVjNzc0XHVkNmM0IFx1Yzc4NVx1YjgyNVx1ZDU1YyBcdWJhODVcdWI4MzlcdWM1YjRcdWFjMDAgXHVjYzI4XHViODQwXHViODVjIFx1YzhmY1x1YzViNFx1Yzg0Y1x1Yzc0NCBcdWI1NGMsIFx1YmFhOFx1YjRlMCBcdWJhODVcdWI4MzlcdWM1YjRcdWI5N2MgXHVjMjE4XHVkNTg5XHVkNTU4XHVhY2UwIFx1YjA5YyBcdWQ2YzQgXHVkM2I4XHVjOWQxXHVhZTMwXHVjNWQwIFx1Yzc4NVx1YjgyNVx1YjQxOFx1YzViNCBcdWM3ODhcdWIyOTQgXHViYjM4XHVjNzkwXHVjNWY0XHVjNzQ0IFx1YWQ2Y1x1ZDU1OFx1YjI5NCBcdWQ1MDRcdWI4NWNcdWFkZjhcdWI3YThcdWM3NDQgXHVjNzkxXHVjMTMxXHVkNTU4XHVjMmRjXHVjNjI0LiBcdWIyZTgsIFx1YmE4NVx1YjgzOVx1YzViNFx1YWMwMCBcdWMyMThcdWQ1ODlcdWI0MThcdWFlMzAgXHVjODA0XHVjNWQwIFx1Y2VlNFx1YzExY1x1YjI5NCBcdWJiMzhcdWM3YTVcdWM3NTggXHViOWU4IFx1YjRhNFx1YzVkMCBcdWM3MDRcdWNlNThcdWQ1NThcdWFjZTAgXHVjNzg4XHViMmU0XHVhY2UwIFx1ZDU1Y1x1YjJlNC48XC9wPlxyXG4iLCJpbnB1dCI6IjxwPlx1Y2NhYlx1YzlmOCBcdWM5MDRcdWM1ZDBcdWIyOTQgXHVjZDA4XHVhZTMwXHVjNWQwIFx1ZDNiOFx1YzlkMVx1YWUzMFx1YzVkMCBcdWM3ODVcdWI4MjVcdWI0MThcdWM1YjQgXHVjNzg4XHViMjk0IFx1YmIzOFx1Yzc5MFx1YzVmNFx1Yzc3NCBcdWM4ZmNcdWM1YjRcdWM5YzRcdWIyZTQuIFx1Yzc3NCBcdWJiMzhcdWM3OTBcdWM1ZjRcdWM3NDAgXHVhZTM4XHVjNzc0XHVhYzAwIE5cdWM3NzRcdWFjZTAsIFx1YzYwMVx1YzViNCBcdWMxOGNcdWJiMzhcdWM3OTBcdWI4NWNcdWI5Y2MgXHVjNzc0XHViOGU4XHVjNWI0XHVjODM4IFx1Yzc4OFx1YzczY1x1YmE3MCwgXHVhZTM4XHVjNzc0XHViMjk0IDEwMCwwMDBcdWM3NDQgXHViMTE4XHVjOWMwIFx1YzU0YVx1YjI5NFx1YjJlNC4gXHViNDU4XHVjOWY4IFx1YzkwNFx1YzVkMFx1YjI5NCBcdWM3ODVcdWI4MjVcdWQ1NjAgXHViYTg1XHViODM5XHVjNWI0XHVjNzU4IFx1YWMxY1x1YzIxOFx1Yjk3YyBcdWIwOThcdWQwYzBcdWIwYjRcdWIyOTQgXHVjODE1XHVjMjE4IE0oMSAmbGU7IE0mbmJzcDsmbGU7IDUwMCwwMDApXHVjNzc0IFx1YzhmY1x1YzViNFx1YzljNFx1YjJlNC4gXHVjMTRiXHVjOWY4IFx1YzkwNFx1YmQ4MFx1ZDEzMCBNXHVhYzFjXHVjNzU4IFx1YzkwNFx1YzVkMCBcdWFjNzhcdWNjZDAgXHVjNzg1XHViODI1XHVkNTYwIFx1YmE4NVx1YjgzOVx1YzViNFx1YWMwMCBcdWMyMWNcdWMxMWNcdWIzMDBcdWI4NWMgXHVjOGZjXHVjNWI0XHVjOWM0XHViMmU0LiBcdWJhODVcdWI4MzlcdWM1YjRcdWIyOTQgXHVjNzA0XHVjNzU4IFx1YjEyNCBcdWFjMDBcdWM5YzAgXHVjOTExIFx1ZDU1OFx1YjA5OFx1Yzc1OCBcdWQ2MTVcdWQwZGNcdWI4NWNcdWI5Y2MgXHVjOGZjXHVjNWI0XHVjOWM0XHViMmU0LjxcL3A+XHJcbiIsIm91dHB1dCI6IjxwPlx1Y2NhYlx1YzlmOCBcdWM5MDRcdWM1ZDAgXHViYWE4XHViNGUwIFx1YmE4NVx1YjgzOVx1YzViNFx1Yjk3YyBcdWMyMThcdWQ1ODlcdWQ1NThcdWFjZTAgXHViMDljIFx1ZDZjNCBcdWQzYjhcdWM5ZDFcdWFlMzBcdWM1ZDAgXHVjNzg1XHViODI1XHViNDE4XHVjNWI0IFx1Yzc4OFx1YjI5NCBcdWJiMzhcdWM3OTBcdWM1ZjRcdWM3NDQgXHVjZDljXHViODI1XHVkNTVjXHViMmU0LjxcL3A+XHJcbiIsImhpbnQiOiIiLCJvcmlnaW5hbCI6IjAiLCJodG1sX3RpdGxlIjoiMCIsInByb2JsZW1fbGFuZ190Y29kZSI6IktvcmVhbiJ9LHsicHJvYmxlbV9pZCI6IjE0MDYiLCJwcm9ibGVtX2xhbmciOiIxIiwidGl0bGUiOiJlZGl0b3IiLCJkZXNjcmlwdGlvbiI6IjxwPllvdSBhcmUgZ2l2ZW4gYSB0ZXh0IHRoYXQgaXMgYSBzZXF1ZW5jZSBvZiBjaGFyYWN0ZXJzLjxcL3A+XHJcblxyXG48cD5DdXJzb3IgY2FuIGJlIHBvc2l0aW9uZWQgaW5zaWRlIG9mIHRoZSB0ZXh0IChiZXR3ZWVuIGFueSB0d28gY29uc2VjdXRpdmUgY2hhcmFjdGVycyksIGF0IHRoZSBiZWdpbm5pbmcgKGxlZnQgb2YgdGhlIGZpcnN0IGNoYXJhY3Rlcikgb3IgYXQgdGhlIGVuZCAocmlnaHQgb2YgdGhlIGxhc3QgY2hhcmFjdGVyKSBvZiB0aGUgdGV4dC48XC9wPlxyXG5cclxuPHA+WW91IGFyZSBnaXZlbiBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIHlvdSBtdXN0IHBlcmZvcm0gb24gdGhlIHRleHQuJm5ic3A7PFwvcD5cclxuXHJcbjxwPlBvc3NpYmxlIG9wZXJhdGlvbnMgYXJlOiZuYnNwOzxcL3A+XHJcblxyXG48dGFibGUgY2xhc3M9XCJ0YWJsZSB0YWJsZS1ib3JkZXJlZFwiIHN0eWxlPVwid2lkdGg6MTAwJVwiPlxyXG5cdDx0Ym9keT5cclxuXHRcdDx0cj5cclxuXHRcdFx0PHRoIHN0eWxlPVwid2lkdGg6MjAlXCI+TDxcL3RoPlxyXG5cdFx0XHQ8dGQgc3R5bGU9XCJ3aWR0aDo4MCVcIj5tb3ZlIGN1cnNvciBvbmUgY2hhcmFjdGVyIHRvIHRoZSBsZWZ0IChpZiBjdXJzb3IgaXMgYXQgdGhlIGJlZ2lubmluZywgZG8gbm90aGluZyk8XC90ZD5cclxuXHRcdDxcL3RyPlxyXG5cdFx0PHRyPlxyXG5cdFx0XHQ8dGg+RDxcL3RoPlxyXG5cdFx0XHQ8dGQ+bW92ZSBjdXJzb3Igb25lIGNoYXJhY3RlciB0byB0aGUgcmlnaHQgKGlmIGN1cnNvciBpcyBhdCB0aGUgZW5kLCBkbyBub3RoaW5nKTxcL3RkPlxyXG5cdFx0PFwvdHI+XHJcblx0XHQ8dHI+XHJcblx0XHRcdDx0aD5CPFwvdGg+XHJcblx0XHRcdDx0ZD5kZWxldGUgY2hhcmFjdGVyIGxlZnQgb2YgdGhlIGN1cnNvciAoaWYgY3Vyc29yIGlzIGF0IHRoZSBiZWdpbm5pbmcsIGRvIG5vdGhpbmcpPFwvdGQ+XHJcblx0XHQ8XC90cj5cclxuXHRcdDx0cj5cclxuXHRcdFx0PHRoPlAgJDxcL3RoPlxyXG5cdFx0XHQ8dGQ+YWRkIGNoYXJhY3RlciAkIHJpZ2h0IG9mIHRoZSBjdXJzb3IgKGNoYXJhY3RlciAkIGlzIGFueSBsb3dlcmNhc2UgbGV0dGVyIG9mIEVuZ2xpc2ggYWxwaGFiZXQpPFwvdGQ+XHJcblx0XHQ8XC90cj5cclxuXHQ8XC90Ym9keT5cclxuPFwvdGFibGU+XHJcblxyXG48cD5CZWZvcmUgZXhlY3V0aW9uIG9mIGdpdmVuIG9wZXJhdGlvbnMsIGN1cnNvciBpcyBhdCB0aGUgZW5kIG9mIHRoZSB0ZXh0LiZuYnNwOzxcL3A+XHJcblxyXG48cD5Xcml0ZSBhIHByb2dyYW0gdGhhdCB3aWxsIGRldGVybWluZSB3aGF0IHdvdWxkIHRoZSB0ZXh0IGxvb2sgbGlrZSBhZnRlciBleGVjdXRpb24gb2YgZ2l2ZW4gb3BlcmF0aW9ucy4mbmJzcDs8XC9wPlxyXG4iLCJpbnB1dCI6IjxwPkluIHRoZSBmaXJzdCByb3cgdGhlcmUgaXMgdGhlIHRleHQuIEl0IGNvbnNpc3RzIG9ubHkgb2YgbG93ZXJjYXNlIGxldHRlcnMgb2YgRW5nbGlzaCBhbHBoYWJldCBhbmQgaXRzIG1heGltYWwgbGVuZ3RoIGlzIDEwMCwwMDAgY2hhcmFjdGVycy48XC9wPlxyXG5cclxuPHA+SW4gdGhlIG5leHQgcm93IHRoZXJlIGlzIGFuIGludGVnZXIgTiwgMSAmbGU7IE4gJmxlOyA1MDAsMDAwLCBudW1iZXIgb2YgZ2l2ZW4gb3BlcmF0aW9ucy4mbmJzcDs8XC9wPlxyXG5cclxuPHA+SW4gdGhlIG5leHQgTiByb3dzIHRoZXJlIGFyZSBvcGVyYXRpb25zIGdpdmVuIGluIHRoZSBvcmRlciBvZiBleGVjdXRpb24uJm5ic3A7PFwvcD5cclxuIiwib3V0cHV0IjoiPHA+SW4gZmlyc3QgYW5kIG9ubHkgcm93IHlvdSBzaG91bGQgd3JpdGUgdGV4dCBhZnRlciB0aGUgZXhlY3V0aW9uIG9mIGFsbCB0aGUgb3BlcmF0aW9ucy4mbmJzcDs8XC9wPlxyXG4iLCJoaW50IjoiIiwib3JpZ2luYWwiOiIxIiwiaHRtbF90aXRsZSI6IjAiLCJwcm9ibGVtX2xhbmdfdGNvZGUiOiJFbmdsaXNoIn1d