Algorithm/BOJ
[BOJ] 17413 단어 뒤집기 2
SolB
2022. 11. 20. 15:43
s=list(input())
i=0
j=0
while True:
if i>=len(s):break
if s[i]=="<":
i+=1
while s[i]!=">":
i+=1
elif s[i].isalnum():
j=i
while i<len(s) and s[i].isalnum():
i+=1
rev=s[j:i]
rev.reverse()
s[j:i]=rev
else:
i+=1
print("".join(s))
<코드 설명>
s를 먼저 입력받는다.i가 s의 길이보다 크거나 같을 때 while문을 빠져나오도록 하였다.
1. s[i]가 "<"일 때, index를 1증가시켜주고 ">"를 만날때까지 index를 증가시켜주어 그대로 출력되도록 하였다.
2. s[i]가 숫자이거나 알파벳인 경우, 시작점인 i를 j에 저장시킨 후 s[i]가 숫자이거나 알파벳이 아닐때까지 i를 증가시켜주었다. 이전에 저장하였던 시작index인 j와 마지막 index인 i까지 reverse()를 적용시켜 다시 s배열 동일 위치에 저장시켰다.
3. s[i]가 공백일 경우, index를 1 증가시켜주었다.
이렇게 구한 배열 s를 출력하였다.
<실행 결과>