에디터(python1406)
첫 풀이: cursor 변수를 활용하여 커서가 가르키고 있는 인덱스를 저장하여 문제를 해결
import sys
s = list(sys.stdin.readline())
N = int(sys.stdin.readline())
cursor = len(s)
for i in range(N):
s_ = sys.stdin.readline().strip()
if s_[0] == 'L':
if cursor != 0:
cursor = cursor - 1
else: continue
elif s_[0] == 'D':
if cursor != len(s):
cursor = cursor + 1
else: continue
elif s_[0] == 'B':
if cursor != 0:
del s[cursor - 1]
else: continue
elif s_[0] == 'P':
s.insert(cursor, s_[1])
cursor = cursor + 1
print("".join(s))
그러나 시간 초과가 발생함
정답 풀이: 왼쪽 스택과 오른쪽 스택을 나눠서 선언하여 왼쪽 스택에서 pop을 하는 방식으로 풀이
import sys
stack_l = list(sys.stdin.readline().strip())
stack_r = []
N = int(sys.stdin.readline())
for i in range(N):
s_ = sys.stdin.readline().split()
if s_[0] == 'L':
if len(stack_l) != 0:
stack_r.append(stack_l.pop())
else:
continue
elif s_[0] == 'D':
if len(stack_r) != 0:
stack_l.append(stack_r.pop())
else:
continue
elif s_[0] == 'B':
if len(stack_l) != 0:
stack_l.pop()
else:
continue
elif s_[0] == 'P':
stack_l.append(s_[1])
answer = stack_l + stack_r[::-1]
print("".join(answer))
'algorithm' 카테고리의 다른 글
알고리즘 기초 1/2 200-자료구조: 요세푸스 문제 (0) | 2025.04.08 |
---|---|
알고리즘 기초 1/2 200-자료구조: 큐 (0) | 2025.04.07 |
알고리즘 기초 1/2 200-자료구조: 스택 수열 (0) | 2025.03.26 |
알고리즘 기초 1/2 200-자료구조: 괄호 (0) | 2025.03.24 |
알고리즘 기초 1/2 200-자료구조: 단어 뒤집기 (0) | 2025.03.21 |