https://www.acmicpc.net/problem/17413
import sys
str = sys.stdin.readline().rstrip() + " "
temp = ""
ans = ""
tag = False
for ch in str:
if ch == "<":
ans += temp[::-1]
temp = ""
tag = True
ans += ch
elif ch == ">":
ans += ch
tag = False
elif ch == " ":
if tag:
ans += ch
else:
ans += temp[::-1]
temp = ""
ans += ch
# 알파벳 또는 숫자인 경우
else:
if tag:
ans += ch
else:
temp += ch
print(ans)
태그 안에도 공백(' ')이 존재할 수 있다는 조건 때문에 어려움을 느꼈다.
이 부분은 tag라는 boolean 변수로 해결할 수 있었다.
만약 tag = True이면, 현재 태그 안을 지나고 있는 상황이기 때문에 공백이 나타나더라도 해당 공백을 그냥 ans에 추가하면 된다.
만약 tag = False이면, 단어 사이의 공백이므로 지금까지 temp에 저장된 단어만 뒤집어서 ans에 추가해 준다. 그리고 새로운 단어가 시작될 테니 temp = ""로 초기화한다.
또 헷갈렸던 부분은 '<'를 만났을 때이다.
공백뿐만 아니라 '<'를 만났다는 건, 어떤 단어가 끝났다는 의미이기 때문에 역시 단어를 뒤집어서 ans에 추가해 주고 temp를 초기화해줘야 한다.
더불어 새로운 태그가 시작된다는 의미이므로 tag = True로 설정하고, '<'를 ans에 추가한다.
그리고 사용자 입력에 ' '을 추가해야 한다.
왜냐하면 공백이 추가되어야 마지막 단어 또는 태그가 ans에 들어갈 수 있기 때문이다.
문제가 어렵진 않은데 막막한 부분이 있다. 문제를 풀면서 익숙해져야 할 것 같다.
좋은 정보 얻어갑니다, 감사합니다.