하루일문

[백준] 17413번 단어 뒤집기 2(파이썬) 본문

algorithm/baekjoon

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

support_u 2023. 3. 6. 10:16

문제

 

17413번: 단어 뒤집기 2

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

www.acmicpc.net

 

코드

import sys
input = sys.stdin.readline

S = map(str, input())
s_li = []
i = ""
a = ""
space = " "

for s in S:
    if s == "<":
        i = s
        if a:
            s_li.append(a[::-1])
            a = ""

    elif s == ">":
        i += s
        s_li.append(i)        
        i = ""
    
    elif i:
        i += s
    
    else:
        if s == " " or s == "\n":
            s_li.append(a[::-1])
            s_li.append(space)
            a = ""
        else:
            a += s 
print(*s_li, sep="")

 

해설

후에 끝에 있는 문자를 넣어주기 위해서 \n이 필요해서 strip()을 일부로 안넣어줬다(즉, sys가 필수이다.)

<> 안에 문자들은 뒤집으면 안되고 띄어쓰기도 주위해야하기 때문에 <>안의 문자를 갈라서 list에 넣어주는 과정을 했다.

i는 <>문자들을 넣어주는 str이고 a는 그냥 str이라서 공백이나 \n나온다면 뒤집어서 리스트에 넣어주고, 구분을 해줄 공백을 리스트에 넣어줬다.

프린트 할 때  공백을 없애서 프린트 해줬다.