Notice
Recent Posts
Recent Comments
Archives
반응형
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Today
Total
01-24 05:46
250x250
관리 메뉴

꿈꾸는 개발자의 블로그

[백준] Python - 17413 단어 뒤집기2 본문

Algorithm/Baekjoon

[백준] Python - 17413 단어 뒤집기2

aldrn29 2022. 9. 18. 03:01

문제 링크

https://www.acmicpc.net/problem/17413

 

17413번: 단어 뒤집기 2

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

www.acmicpc.net

 

문제 풀이

  1. '<알파벳 소문자/공백>' 또는 '알파벳 소문자/숫자/공백'으로 이루어진 문자열을 찾아 words 변수에 담는다. (re.compile을 사용하여 정규 표현식을 컴파일)
  2. words를 순회하며 조건에 따라 result 변수에 이어 붙인다.
    1. 만약 '<'가 포함되어 있다면 그대로 이어 붙인다.
    2. '<'가 포함되어 있지 않고, ' '(공백)이 있다면 공백을 기준으로 단어를 잘라서 역순하여 이어 붙인다.
    3. '<'가 포함되어 있지 않고, ' '(공백)이 없다면 단어를 바로 역순하여 이어 붙인다.

 

전체 코드

import re
from sys import stdin
input = stdin.readline

str = input().strip()
p = re.compile('<[a-zA-Z0-9 ]+>|[a-zA-Z0-9 ]+')
words = p.findall(str)
result = ''

for word in words :
    if word[0] == '<' :
        result += word
    else :
        if ' ' in word :
            s = word.split()
            for i in range(len(s)) :
                result += ''.join(reversed(s[i]))
                if i != len(s)-1 : result += ' '
        else :
            result += ''.join(reversed(word))

print(result)

 

728x90
728x90
Comments