[Silver II]
https://www.acmicpc.net/problem/1406
풀이
원래는 Linked List를 사용하여 문제를 해결하는 방법이 정석 풀이지만, Python에서 Linked List를 구현하는 것이
클래스를 선언하고...등과 같은 절차로 귀찮은 관계로, 스택(덱 사용) 2개를 사용하여 문제를 해결하였다.
왼쪽 스택과 오른쪽 스택이 있다고 가정하고, 왼쪽 스택의 top이 현재 커서의 위치가 된다.
Apple이라는 글자가 있는데 커서가 l뒤에 있다면 ['A', 'P', 'p', 'l'] / ['e']와 같이 스택이 존재하게 된다.
항상 왼쪽 top에 커서가 위치한다 가정하고, 양쪽 스택의 pop, push를 통해 커서를 이동시킨다.
from collections import deque
import sys
# global var
n = 0
leftStack = deque()
rightStack = deque()
# main
leftStack = deque(list(sys.stdin.readline().rstrip()))
n = int(sys.stdin.readline())
for i in range(n):
command = list(sys.stdin.readline().rstrip().split())
if command[0] == 'L':
if leftStack:
rightStack.appendleft(leftStack.pop())
elif command[0] == 'D':
if rightStack:
leftStack.append(rightStack.popleft())
elif command[0] == 'B':
if leftStack:
leftStack.pop()
elif command[0] == 'P':
leftStack.append(command[1])
for chr in leftStack:
print(chr, end='')
for chr in rightStack:
print(chr, end='')
'백준 알고리즘 > Python' 카테고리의 다른 글
[백준] 13335. 트럭 - Python (0) | 2023.09.26 |
---|---|
[백준] 2667. 단지번호붙이기 - Python (2) | 2023.09.18 |
[백준] 1260. DFS와 BFS - Python (0) | 2023.09.18 |
[백준] 14502. 연구소 - Python (0) | 2023.09.17 |
[백준] 10808. 알파벳 개수 - Python (0) | 2023.09.04 |