이것도 바킹독 연결 리스트 강의 보고 나서 풀긴 했는데 이전 방식으로 푸니까 자꾸 시간 초과가 났다.
어떻게 해도 안 되길래 구글링을 해보니까 파이썬 풀이는 다들 스택 방식이어서 이번 기회에 나도 그렇게 풀어봤다.
왼쪽, 오른쪽 배열을 만들고 각각 커서의 왼쪽과 오른쪽 문자열로 한다. 주의할 점은 스택 방식으로 저장되기 때문에 오른쪽 배열은 거꾸로 출력해야 한다는 거!
\n
)를 명시적으로 작성해야 한다.join()
은 두 문자열을 연결하는 게 아니라 인자로 전달된 배열의 각 요소를 앞의 문자열을 연결자로 해서 하나의 문자열로 만들어준다.a = ['a', 'b', 'c']
''.join(a) # abc
' * '.join(a) # a * b * c
reverse()
가 아니라 reversed()
는 처음 봤다.reverse()
는 기존 리스트를 거꾸로 뒤집어주고,reversed()
는 reversed 객체를 반환한다고 한다. (참고)''.join()
을 사용!import sys
input = sys.stdin.readline
print = sys.stdout.write
n = int(input())
for i in range(n) :
left = []
right = []
pwd = input().strip()
for c in pwd :
if c == '<' :
if left :
right.append(left.pop())
elif c == '>' :
if right :
left.append(right.pop())
elif c == '-' :
if left :
left.pop()
else :
left.append(c)
print(''.join(left) + ''.join(reversed(right)) + '\n')