티스토리 뷰

www.acmicpc.net/problem/1406

 

1406번: 에디터

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

www.acmicpc.net

커서를 기준으로 left, right 스택을 두고 풀어야 한다.

코드 플러스 알고리즘 기초 강의를 수강하면서 문제를 풀고 있는데,

강의에서 스택문제라는 걸 알고 풀어서 나름 쉽게 풀렸는데

스택을 이용해야하는 문제라는 것을 아는 것이 중요한 것 같다.

import sys
sen = list(input()) # 입력 문자열
n = int(input()) # 명령어의 개수
cmds = []
for _ in range(n):
    cmds.append(sys.stdin.readline().strip())

left, right = sen,[] # 커서를 기준으로 left, right 스택

for cmd in cmds:
    if cmd == 'L':
        if len(left) != 0:
            right.append(left.pop())
        
    elif cmd == 'D':
        if len(right) != 0:
            left.append(right.pop())

    elif cmd == 'B':
        if len(left) != 0:
            left.pop()

    else:
        x = cmd[2]
        left.append(x)

right = right[::-1] # right 스택 거꾸로 뒤집기
print(''.join(left) + ''.join(right))