https://www.acmicpc.net/problem/17413
https://github.com/stellaluminary/Baekjoon
1) '<'와 '>' 사이에는 알파벳 소문자와 공백만 있다.
2) 연속하는 두 단어는 공백 하나로 구분한다
3) 태그와 단어 사이에는 공백이 없다.
이 조건을 만족하는 코드를 구현한다.
다만 태그 '<', '>'에 대한 구분과 그 안의 내용을 넣기 위해서 별도의 flag를 사용한다.
import sys
input = sys.stdin.readline
l = list(input().rstrip())
res = []
flag = False
tmp = ''
for i in range(len(l)):
if l[i] == '<':
if tmp not in '':
res.append(tmp[::-1])
tmp = ''
res.append(l[i])
flag = True
continue
if l[i] == '>':
res.append(l[i])
flag = False
continue
if flag:
res.append(l[i])
continue
if l[i] == ' ':
res.append(tmp[::-1]+l[i])
tmp = ''
continue
if i == len(l)-1:
tmp += l[i]
res.append(tmp[::-1])
break
tmp += l[i]
print(''.join(res))
방법 1을 간소화 시킨 방법이다.
import sys
input = sys.stdin.readline
l = list(input().rstrip())
word = ''
res = ''
flag = False
for c in l:
if c == '<':
flag = True
res += word
word = c
elif c == '>':
flag = False
res += word + '>'
word = ''
elif c == ' ':
res += word + c
word = ''
elif flag:
word += c
else:
word = c + word
print(res+word)
조건에 따른 string 추가 방법이다.
태그 기호 전에는 word = i + word로 역순으로 저장하도록 하며 태그 안에서는 word = word + i의 형태로 저장한다.
import sys
input = sys.stdin.readline
l = list(input().rstrip())
flag = False
word = ''
res = ''
for i in l:
if flag == False:
if i == '<':
flag = True
word += i
elif i == ' ':
word += i
res += word
word = ''
else:
word = i + word
elif flag:
word += i
if i == '>':
flag = False
res += word
word = ''
print(res+word)