코딩/Python

[Python] 1406 에디터

도아죻아 2022. 11. 16. 19:04
반응형

코드 작성

import sys
s1 = list(input())
s2 = []
n = int(input())
for _ in range(n):
    cmd = list(sys.stdin.readline().split())
    if cmd[0]=='P':
        s1.append(cmd[1])
    elif cmd[0]=='L'and s1:    #입력값의 첫번째 값이 L이면서, s1이 무언가 있다면
        s2.append(s1.pop()) 
    elif cmd[0]=='D'and s2:   
        s1.append(s2.pop())
    elif cmd[0]=='B'and s1:    
        s1.pop()
print(''.join(s1+list(reversed(s2))))

코드  풀이

#1 문제 이해

abc의 리스트가 있고 xyz의 리스트 2개가 나누어 있다고 본다. abcxyz라는 단어가 있으면 커서를 왼쪽(L)으로 움직이면서 ab 와 cxyz라고 분리되게끔 한다.

 

#2. 풀이

import sys
s1 = list(input()) #s1에만 리스트형식으로 단어를 입력하고, s2에는 빈 리스트형을 만든다.
s2 = []
n = int(input())
for _ in range(n):
    cmd = list(sys.stdin.readline().split())
    if cmd[0]=='P':
        s1.append(cmd[1])
    elif cmd[0]=='L'and s1:    #입력값의 첫번째 값이 L이면서, s1에 무엇인가 있다면
        s2.append(s1.pop()) 
    elif cmd[0]=='D'and s2:   
        s1.append(s2.pop())
    elif cmd[0]=='B'and s1:    
        s1.pop()
print(''.join(s1+list(reversed(s2))))
# join함수를 쓰는데 띄어쓰기 없이 표시하는데, s1은 그대로 출력하고 s2는 역행으로 출력한다.

#3 역순 출력

출력을 거꾸로 할 때 [::-1]으로 쓰기도 하는데 리스트의 값을 전부 뺐다가 다시 넣는 작업을 하므로 시간 소요가 많이 든다.

반응형