문제 : 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문 안에서 입력을 받을 수도 있었다.