관리 메뉴

솜씨좋은장씨

[BaekJoon] 1406번 : 에디터 (Python) 본문

Programming/코딩 1일 1문제

[BaekJoon] 1406번 : 에디터 (Python)

솜씨좋은장씨 2020. 5. 8. 17:53
728x90
반응형

1일 1문제 92일차!

오늘의 문제는 백준의 에디터 입니다.

 

1406번: 에디터

문제 한 줄로 된 간단한 에디터를 구현하려고 한다. 이 편집기는 영어 소문자만을 기록할 수 있는 편집기로, 최대 600,000글자까지 입력할 수 있다. 이 편집기에는 '커서'라는 것이 있는데, 커서는 문장의 맨 앞(첫 번째 문자의 왼쪽), 문장의 맨 뒤(마지막 문자의 오른쪽), 또는 문장 중간 임의의 곳(모든 연속된 두 문자 사이)에 위치할 수 있다. 즉 길이가 L인 문자열이 현재 편집기에 입력되어 있으면, 커서가 위치할 수 있는 곳은 L+1가지 경우가

www.acmicpc.net

Solution

import sys 
from collections import deque 

class Editor: 
    def __init__(self, input_text): 
        self.left_deque = deque(input_text) 
        self.right_deque = deque() 

    def move_cursor_left(self): 
        if self.left_deque: 
            self.right_deque.appendleft(self.left_deque.pop()) 

    def move_cursor_right(self): 
        if self.right_deque:
            self.left_deque.append(self.right_deque.popleft()) 

    def delete_left_character(self): 
        if self.left_deque: 
            self.left_deque.pop() 

    def add_character_to_left(self, character2add): 
        self.left_deque.append(character2add) 

editor = Editor(sys.stdin.readline().strip()) 
            
N = int(sys.stdin.readline().strip()) 
            
while N: 
    command = sys.stdin.readline().strip() 
    if command[0] == 'L': 
        editor.move_cursor_left() 
    elif command[0] == 'D': 
        editor.move_cursor_right() 
    elif command[0] == 'B': 
        editor.delete_left_character() 
    else: 
        editor.add_character_to_left(command[2]) 
    N -= 1 
print(''.join(editor.left_deque) + ''.join(editor.right_deque))
 

SOMJANG/CODINGTEST_PRACTICE

1일 1문제 since 2020.02.07. Contribute to SOMJANG/CODINGTEST_PRACTICE development by creating an account on GitHub.

github.com

 

Comments