본문 바로가기

코딩/Python

[Python] 1406 에디터

반응형

코드 작성

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]으로 쓰기도 하는데 리스트의 값을 전부 뺐다가 다시 넣는 작업을 하므로 시간 소요가 많이 든다.

반응형

'코딩 > Python' 카테고리의 다른 글

[Python] 10871 X보다 작은 수  (0) 2022.11.16
[Python] 10807 개수 세기  (0) 2022.11.16
[Python] 백준 1158 요세푸스 문제  (0) 2022.11.16
[Python] 백준 10872 팩토리얼  (0) 2022.11.15
[Python] 백준 1789 수들의 합  (0) 2022.11.14