접근법
문자열의 크기가 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]
'⏰ 코딩테스트 > 백준 알고리즘' 카테고리의 다른 글
백준 알고리즘 - 1427 - 소트인사이드 (0) | 2021.08.20 |
---|---|
백준 알고리즘 - 2750 - 수 정렬하기 (0) | 2021.08.20 |
백준 알고리즘 - 1966 - 프린터 큐 (0) | 2021.08.18 |
백준 알고리즘 - 1874 - 스택 수열 (0) | 2021.08.17 |
백준 알고리즘 - 2798 - 블랙잭 (0) | 2021.08.16 |