문제
풀이
- 2개의 stack과 switch란 bool 변수를 사용함.
- 꺽쇠로 둘러싸인 부분은 그대로 유지되고, 아닌 부분은 뒤집어줘야 하기 때문에 stack1엔 정순, stack2엔 역순으로 넣어야 할 값을 넣어줌.
- switch가 True면 정순, False면 역순을 의미함.
- 여는 꺽쇠를 만나거나 공백이 입력될 시 stack2에 값이 존재할 경우만 뒤집어서 정순 배열에 넣어줌.
- 결과 출력 시 stack2에 값이 존재할 경우 뒤집어서 stack1에 붙여줌.
코드
import sys
def solution() :
s = sys.stdin.readline().rstrip()
stack1 = [] # forward order
stack2 = [] # reverse order
switch = False
for s in s :
if s == '<' :
if stack2 :
stack1 = stack1 + stack2[::-1]
stack2 = []
switch = True
stack1.append(s)
elif s == '>' :
switch = False
stack1.append(s)
else :
if switch == True :
stack1.append(s)
else :
if s == ' ' :
stack1 = stack1 + stack2[::-1]
stack2 = []
stack1.append(s)
else :
stack2.append(s)
if not stack2 :
print(''.join(stack1))
else :
print(''.join(stack1 + stack2[::-1]))
solution()