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를 출력하였다.

 

<실행 결과>