문제 : https://www.acmicpc.net/problem/17413
두 가지 문자열을 활용하여 문제를 풀었다.
result : 결과를 출력할 문자열, 괄호(<>)안의 값을 기본적으로 담는다.
stack : 괄호 밖의 값을 기본적으로 담아놓고 역순으로 result에 다시 담는다.
- 기본적으로
tag가 True이면 괄호안의 값을result에 넣는다는 의미이고 False일 경우 일반 문자를stack에 넣는 의미이다.- 문자열 순회 중 '<'가 있을경우
stack에 있던 문자들을 역순으로result에 담은 후stack초기화 -> 후에result에 '<'를 추가 -> continue로 다시 반복문 수행- '>' 가 있을 경우
result에 '>' 추가 -> continue로 다시 반복문 수행- 공백문자를 만날 경우에는 기존에 있던 일반문자열을 뒤집어 놔야 하므로
stack에 있는 데이터를 역순으로result에 추가하고 뒤에다 공백을 붙여준다 -> 후에stack초기화 -> continue로 반복문 다시 수행한다.- 모든 반복문을 수행 후에
result와stack을 역순으로 출력 (<>가 나오지 않았다면result에 값이 없을 수도 있으니까)
import sys
input = sys.stdin.readline
result = ""
stack = ""
tag = False
for i in input().rstrip():
if (i == '<'):
tag = True
result += stack[::-1]
stack = ""
result += i
continue
elif(i == '>'):
tag = False
result += i
continue
elif(i == ' '):
result += stack[::-1]
result += " "
stack = ""
continue
if tag:
result += i
else:
stack += i
print(result + stack[::-1])
for i in input().rstrip() : for문 안에서 입력을 받을 수도 있었다.