본문 바로가기

IT 차곡차곡/Python

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

문제

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

 

17413번: 단어 뒤집기 2

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

www.acmicpc.net

풀이

 - 구현, 문자열

 

최근 정규표현식을 배워 정규표현식으로 문제를 풀었다.

 

<>로 이루어진 문자열과 그 이외의 문자열을 나누었다.

 

<[a-zA-Z0-9 ]+>|[a-zA-Z0-9 ] 는 <대소문자or숫자or공백으로 이루어진문자> 또는 대소문자or숫자or공백으로 이루어진 문자를 매치시킨다.

 

findall을 이용해 <open>tag<close>를 검색하면 ['<open>', 't', 'a', 'g', '<close>'] 형태로 추출이 된다.

 

반복을 통해 <문자열> 인 경우, 역순 없이 결과값에 담아주고 't', 'a', 'g'인 경우 변수에 담아서 역순으로 결과값에 담아준다.

 

 

[Python] 정규표현식 1

정규 표현식 복잡한 문자열을 처리할 때 사용하는 기법이다. 정규 표현식은 줄여서 정규식이라고도 한다. 파이썬의 정규표현식을 사용하는 방법 1. 정규표현식 모듈 불러오기   import re 2. 정규

kongpowder.tistory.com

코드

import re

pat = re.compile('<[a-zA-Z0-9 ]+>|[a-zA-Z0-9 ]')

objs = pat.findall(input())

result = ''
interval = ''
cnt = 1
for obj in objs:
    if obj[0] == '<':
        # 기존에 저장되어있던 문자열(interval) 뒤집어 담기
        result += interval[::-1]
        # <문자열> 담기
        result += obj
        # interval 초기화
        interval = ''
    else:
        # 공백일 경우,
        if obj == ' ':
            # 기존에 저장되어있던 문자열(interval) 역순 + 공백 담기
            result += interval[::-1] + obj
            # interval 초기화
            interval = ''
        # 리스트의 마지막인 경우,
        elif cnt == len(objs):
            interval += obj
            result += interval[::-1]
            interval = ''
        else:
            # 문자를 뒤집기 위해 변수에 담는다
            interval += obj
    cnt += 1

print(result)