본문 바로가기
코딩테스트

[백준][파이썬]17413번: 단어 뒤집기 2

by 과아아앙 2021. 3. 31.

문제 출처 : www.acmicpc.net/problem/17413

 

17413번: 단어 뒤집기 2

문자열 S가 주어졌을 때, 이 문자열에서 단어만 뒤집으려고 한다. 먼저, 문자열 S는 아래와과 같은 규칙을 지킨다. 알파벳 소문자('a'-'z'), 숫자('0'-'9'), 공백(' '), 특수 문자('<', '>')로만 이루어져

www.acmicpc.net

내 풀이 

S = input()

arr = []
tag = []
normal = []
check = True

for i in range(len(S)):
    if S[i] == '<':
        tag.append(S[i])
        if normal:
            normal.reverse() 
            arr.append(normal)
            normal = []
        check = False
    elif S[i] == '>':
        tag.append(S[i])
        arr.append(tag)
        tag = []
        check = True
    elif S[i] ==  ' ':
        if check == False:
            tag.append(S[i])
        else:
            normal.reverse()
            normal.append(S[i])
            arr.append(normal)
            normal = []
    else:
        if check == False:
            tag.append(S[i])
        else:
            normal.append(S[i])
    
if normal:
    normal.reverse()
    arr.append(normal)
for i in range(len(arr)):
    print(''.join(arr[i]), end = '')

<, > 과 공백을 구분해주면 되는 문제였다.

<가 나오면 check를 False로 설정해서 >가 나올때까지 태그를 완성시키고

태그가 끝나면 정답 리스트에 집어 넣었다.

그 외의 경우에는 <나 공백이 올 때까지 임시 리스트에 넣었다가 뒤집어서 정답리스트에 추가시켰다.