접근법

문자열의 크기가 1,000,000 이므로 단순하게 구현하라는대로 구현하면 문제를 풀 수 없다.

O(n) 의 선형시간 안에 문제를 풀 수 있는 알고리즘을 짜야 문제를 해결할 수 있다.

스택


풀이


코드

testcase = int(input())

for _ in range(testcase):
  arr = list(str(input()))
  stack1 = []
  stack2 = []
  for i in range(len(arr)):
      if arr[i] == "<":
          if len(stack1) != 0:
              stack2.append(stack1.pop())
      elif arr[i] == ">":
          if len(stack2) != 0:
              stack1.append(stack2.pop())
      elif arr[i] == "-":
          if len(stack1) != 0:
              stack1.pop()
      else:
          stack1.append(arr[i])
  print(''.join(stack1) + ''.join(stack2[::-1]))

# 2
# <<BP<A>>Cd-
# ThIsIsS3Cr3t

 

 

리스트를 붙여서 출력

''.join()

리스트 거꾸로 출력

list[::-1]
복사했습니다!