4676번 Haiku Review

문제


img01

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')

채점


img02

반성


예전에 정규식으로 XSS 방지 스크립트 짜던 기억이 떠오른다.
힘들었는데 진짜…

코드 확인


Link to GitHub

Updated: