머쓱이는 태어난 지 6개월 된 조카를 돌보고 있습니다. 조카는 아직 "aya", "ye", "woo", "ma" 네 가지 발음을 최대 한 번씩 사용해 조합한(이어 붙인) 발음밖에 하지 못합니다. 문자열 배열 babbling이 매개변수로 주어질 때, 머쓱이의 조카가 발음할 수 있는 단어의 개수를 return하도록 solution 함수를 완성해주세요.
babbling | result |
---|---|
["aya", "yee", "u", "maa", "wyeoo"] | 1 |
["ayaye", "uuuma", "ye", "yemawoo", "ayaa"] | 3 |
def solution(babbling):
for i in range(len(babbling)):
babbling[i] = babbling[i].replace("aya", "/")
babbling[i] = babbling[i].replace("woo", "/")
babbling[i] = babbling[i].replace("ye", "/")
babbling[i] = babbling[i].replace("ma", "/")
# "" 가 아니라 '/' 를 선택한 이유는 ''로 했을때
# wyeoo 같은 문자에서 ye가 사라진 후 woo가 인식되는
# 경우가 발생했기 때문
for i in range(len(babbling)):
babbling[i] = babbling[i].replace("/","")
# 추후에 /를 없애서 수를 셈으로써 순서의 혼용으로 인한 경우를 방지함
answer = babbling.count('')
return answer
re 를 이용한 풀이
import re
def solution(babbling):
regex = re.compile('^(aya|ye|woo|ma)+$')
cnt=0
for e in babbling:
if regex.match(e):
cnt+=1
return cnt
re를 이용한 풀이를 생각해보려고 했으나 내가 했던 방법이 가장 쉽게 생각할 수 있는 방법이라 저렇게 풀었다 re를 사용하면 general expression이 표현 가능해지므로 다양한 형태를 표현할 수 있다.
다양한 풀이들이 있었으나 여기서 마무리