문제

https://programmers.co.kr/learn/courses/30/lessons/12918?language=python3

풀이

def solution(s):
    return s.isdigit() and (len(s) == 4 or len(s) == 6)

더 나은 풀이

def solution(s):
    return s.isdigit() and len(s) in (4,6)

잘 풀었다고 심취해있었는데, in 함수로 and 를 줄이는 방법이 있었다.
동작은 비슷하게 하겠지만, 가독성이 훨씬 좋다.

def alpha_string46(s):
    import re
    return bool(re.match("^(\d{4}|\d{6})$", s))

정규식으로 풀어낸게 재밌었던 코드
문제가 의도하는 바에는 적합하지 않은 것 같지만,
정규식은 언제봐도 깔끔하고 재밌는 것 같다.

댓글남기기