입력 | 출력 |
---|---|
baekjoon online judge | noojkeab enilno egduj |
<open>tag<close> | <open>gat<close> |
<ab cd>ef gh<ij kl> | <ab cd>fe hg<ij kl> |
one1 two2 three3 4fourr 5five 6six | 1eno 2owt 3eerht rruof4 evif5 xis6 |
< space >space space space< spa c e> | < space >ecaps ecaps ecaps< spa c e> |
: <
를 만나면 >
를 만날 때까지 pass한다.
>
를 만나면 <
를 만날 때까지를 리스트에 공백 기준으로 담는다.
처음 인덱스 i를 0으로 두고, while문을 돌면서 i번째 원소가 <
이면 while문으로 돌면서 i번째 원소가 >
가 아닐 동안 i++한다. i번째 원소가 >
이면 while문으로 돌면서 i번째 원소가 <
가 아닐 동안 i++하고 스택에 i번째 원소를 담는다.
<
를 만나면>
를 만날 때까지 pass한다.- i번째 원소가
숫자나 문자
이면, 그때의 시작 i를 start변수에 저장해두고, i가 범위 안에 있으며 i번째 원소가 숫자나 문자일 동안 i++후에 tmp라는 리스트에 string[start:i]를 담고 reverse한다. 그 후 string[start:i]를 tmp로 대체한다.- i번째 원소가
<
가 아니고, 숫자나 문자도 아니라면 공백이므로 넘어간다.isalnum()
은 공백을 포함하지 않으므로 자동으로 공백 전까지의 단어를 판별할 수 있다.
string = list(input())
tmp = []
i = 0
while i < len(string):
if string[i] == '<':
i += 1
while string[i] != '>':
i += 1
i += 1
elif string[i].isalnum():
start = i
while i < len(string) and string[i].isalnum():
i += 1
tmp = string[start:i]
tmp.reverse()
string[start:i] = tmp
else:
i += 1
print(''.join(string))