백준(Python) 풀이/자료 구조

백준(Python) 1406번 에디터 풀이

개발윗미 2022. 7. 5. 16:49

Python으로 구현한 1406번 에디터 문제 풀이입니다.

 

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

 

1406번: 에디터

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

www.acmicpc.net


import sys
input = sys.stdin.readline

data = list(input().rstrip())
temp = []

n = int(input())
for _ in range(n) :
    order = list(input().split())
    if order[0] == 'L' : # 커서를 왼쪽으로 한 칸 이동
        if data :
            temp.append(data.pop())
    elif order[0] == 'D' : # 커서를 오른쪽으로 한 칸 이동
        if temp :
            data.append(temp.pop())
    elif order[0] == 'B' : # 커서 왼쪽에 위치한 값 삭제
        if data :
            data.pop()
    elif order[0] == 'P' : # 커서 위치에 문자 추가
        data.append(order[1])

data.extend(reversed(temp))
print(''.join(data))

 

1. 입력받은 order[0] 값이 'L'일 경우 아래와 같은 작업을 수행한다.

  - 만약 data 리스트에 값이 존재한다면 가장 마지막 요소를 빼내어 temp 리스트에 추가한다.

 

2. 입력받은 order[0] 값이 'D'일 경우 아래와 같은 작업을 수행한다.

  - 만약 temp 리스트에 값이 존재한다면 가장 마지막 요소를 빼내어 data 리스트에 추가한다.

 

3. 입력받은 order[0] 값이 'B'일 경우 아래와 같은 작업을 수행한다.

  - 만약 data 리스트에 값이 존재한다면 가장 마지막 요소를 빼낸다.

 

4. 입력받은 order[0] 값이 'P' 일경우 order[1] 문자를 data 리스트에 추가한다.

 

5. 최종적으로 temp 리스트의 값을 거꾸로 하여 data 리스트에 합친 후 문자들을 붙여 출력한다.