https://www.acmicpc.net/problem/17413
import sys
stack = ""
result = ""
check = False # < > 태그 여부
for s in sys.stdin.readline().rstrip():
if s == "<":
check = True
result = result + stack[::-1] + s
stack = ""
continue
elif s == ">":
check = False
result += s
continue
elif s == " ":
if check:
result += " "
else:
result = result + stack[::-1] + " "
stack = ""
continue
if check:
result += s
else:
stack += s
print(result + stack[::-1])
import sys
from collections import deque
stack = deque()
result = ""
check = False # < > 태그 여부
for s in sys.stdin.readline().rstrip():
if s == "<":
while stack:
result += stack.pop()
result += s
check = True
continue
elif s == ">":
check = False
result += s
continue
elif s == " ":
if check:
result += " "
else:
while stack:
result += stack.pop()
result += " "
continue
if check:
result += s
else:
stack.append(s)
print(result + "".join(stack)[::-1])
구현과 스택 두 가지 방법으로 프로그램을 작성, 알고리즘은 동일
단어와 태그에 포함되는 문자를 구별하기 위해 boolean을 사용
뒤집어야 하는 단어는 stack을 거쳐서 result에 저장
태그는 바로 result에 저장
알고리즘은 동일하지만 스택 방식에서는 stack에서 result로 데이터를 이동하는 과정에서 while(반복문)을 사용하기 때문에 구현 방식보다 시간이 걸린다고 예상됩니다.