# 배열로 풀면 시간초과 (배열의 insert 연산 때문에)
def run(string):
pwd = []
idx = 0 # 커서의 위치
for ch in string:
if ch == "<":
idx = max(0, idx - 1)
elif ch == ">":
idx = min(len(pwd), idx + 1)
elif ch == "-":
if pwd:
pwd.pop()
idx -= 1
else:
pwd.insert(idx, ch)
idx += 1
return pwd
# [KP] 커서 기준으로 2개 스택으로 구현하면 insert 연산을 피할수 있다
def run(string):
lst, rst = [], [] # 스택 2개
for ch in string:
if ch == "<":
if lst:
rst.append(lst.pop())
elif ch == ">":
if rst:
lst.append(rst.pop())
elif ch == "-":
if lst:
lst.pop()
else:
lst.append(ch)
pw = lst + list(reversed(rst))
return pw
T = int(input())
for _ in range(T):
string = input()
ans = run(string)
print("".join(ans))
'BOJ 알고리즘 (패캠) > 자료구조, 구현' 카테고리의 다른 글
1920번: 수 찾기 (구현, 해시, set) - Fastcampus (0) | 2020.10.04 |
---|---|
10930번: SHA-256 (구현, 해시, hashlib) - Fastcampus (0) | 2020.10.04 |
1966번: 프린터큐 (구현, 큐) - Fastcampus (0) | 2020.10.04 |
1874번: 스택수열 (구현, 스택) - Fastcampus (0) | 2020.10.04 |
2798번: 블랙잭 (구현, 반복) - Fastcampus (0) | 2020.10.04 |