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

 

17413번: 단어 뒤집기 2

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

www.acmicpc.net

 

 

문제 풀이

- < > 괄호 안에 단어가 있는 경우 또는 나머지 단어들을 표현하는 패턴 생성

- 괄호가 있는 단어는 그대로 결과 값에 넣어주고

- 괄호가 없는 단어들은 문자열로 만들어주고 뒤집어주기

import re

S = input()
p = re.compile('<[a-z0-9 ]+>|[a-z0-9 ]')
m = p.findall(S)

result = ''
stack = ''
idx = 1

for word in m:
    if word[0] == '<':
        result += stack[::-1]
        result += word
        stack = ''
    else:
        if word == ' ':
            result += stack[::-1] + ' '
            stack = ''
        elif idx == len(m):
            stack += word
            result += stack[::-1]
            stack = ''
        else:
            stack += word
    idx += 1

print(result)

 

+ Recent posts