4676번 Haiku Review
문제
번역
하이쿠는 5/7/5 조의 일본 시다.
입력을 받아 하이쿠가 맞다면 Y 아니라면 잘못된 행의 숫자를 출력하시오.
설계
a, e, i, o, u, y 6개를 모음으로 치며 모음이 붙어있는 경우에는 1음절로 친다.
예제의 경우를 확인해보면
happy purple frog
eating bugs in the marshes
get indigestion
그래서 Y로 볼 수 있다.
아니 이거 정규식 짜면 한 방 아닌가?
구현
정규식은 [aeiouy]+ 을 사용한다.
aeiouy 중 하나 이상(+)의 연속된 그룹을 찾는 정규식이다.
자동으로 찾아주니 분기만 잘 태워주면 끝
import re
while True:
haikus = input().strip()
if haikus == 'e/o/i':
break
haiku = haikus.split('/')
jo = [5, 7, 5]
result = 1;
for i in range(3):
if len(re.findall(r'[aeiouy]+', haiku[i])) != jo[i]:
print(result)
break
result += 1
if result == 4:
print('Y')
채점
반성
예전에 정규식으로 XSS 방지 스크립트 짜던 기억이 떠오른다.
힘들었는데 진짜…
코드 확인