문제
https://www.acmicpc.net/problem/17413
풀이
- 구현, 문자열
최근 정규표현식을 배워 정규표현식으로 문제를 풀었다.
<>로 이루어진 문자열과 그 이외의 문자열을 나누었다.
<[a-zA-Z0-9 ]+>|[a-zA-Z0-9 ] 는 <대소문자or숫자or공백으로 이루어진문자> 또는 대소문자or숫자or공백으로 이루어진 문자를 매치시킨다.
findall을 이용해 <open>tag<close>를 검색하면 ['<open>', 't', 'a', 'g', '<close>'] 형태로 추출이 된다.
반복을 통해 <문자열> 인 경우, 역순 없이 결과값에 담아주고 't', 'a', 'g'인 경우 변수에 담아서 역순으로 결과값에 담아준다.
코드
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)
'IT 차곡차곡 > Python' 카테고리의 다른 글
[Python] 정규표현식5 - 컴파일 옵션 (DOTALL, IGNORECASE, MULTILINE) (0) | 2021.06.23 |
---|---|
[Python] 정규표현식4 - match 객체의 메서드 (0) | 2021.06.23 |
[Python] 정규표현식3 - Dot(.), 반복(*, +, {m,n}) (0) | 2021.06.23 |
[Python] 정규표현식2 - 문자열 매치 [ ] (0) | 2021.06.23 |