1406 : 에디터

서희찬·2021년 11월 16일
0

백준

목록 보기
74/105

문제

코드

#1406 : 에디터 
import sys 
input = sys.stdin.readline

stack1 = list(input().strip()) #커서기준 왼쪽 
stack2=[] #커서기준 오른쪽 

n = int(input())

for i in range(n):
    choice = input().split()
    if choice[0]=='L' and stack1 != []: #왼쪽엔 아무것도 없지 않을때 
        stack2.append(stack1.pop())
    elif choice[0]=='D' and stack2 != []: #오른쪽엔 아무것도 없지 않을때 
        stack1.append(stack2.pop())
    elif choice[0]=='P':
        stack1.append(choice[1])
    elif choice[0]=='B' and stack1!= []:
        stack1.pop()

print("".join(stack1+list(reversed(stack2))))
#join을 통해 list -> strings change 

해설

처음에는 리스트로 접근해서 그냥 빼주고 어쩌고,, 해서 시간초과가 떴다
그래서 생각의 방식을 바꿔서 접근했다.

커서를 기존에는 정의하여서 그 인덱스값에 접근하였지만
스택 2개를 사용함으로서 커서를 별도로 지정해주지 않아도 되게 된다.
그 이유는 왼쪽 스택은 커서의 왼쪽 오른쪽 스택은 커서의 오른쪽이라고 생각하면 되기때문이다.
그렇게 스택 왼/오 를 만들어서 진행해 나가는 코드이다.

profile
부족한 실력을 엉덩이 힘으로 채워나가는 개발자 서희찬입니다 :)

0개의 댓글