머쓱이는 태어난 지 6개월 된 조카를 돌보고 있습니다. 조카는 아직 "aya", "ye", "woo", "ma" 네 가지 발
음을 최대 한 번씩 사용해 조합한(이어 붙인) 발음밖에 하지 못합니다. 문자열 배열 babbling이 매개변수로
주어질 때, 머쓱이의 조카가 발음할 수 있는 단어의 개수를 return하도록 solution 함수를 완성해주세요.
제한사항
1 ≤ babbling의 길이 ≤ 100
1 ≤ babbling[i]의 길이 ≤ 15
babbling의 각 문자열에서 "aya", "ye", "woo", "ma"는 각각 최대 한 번씩만 등장합니다.
즉, 각 문자열의 가능한 모든 부분 문자열 중에서 "aya", "ye", "woo", "ma"가 한 번씩만 등장합니다.
문자열은 알파벳 소문자로만 이루어져 있습니다.
=>
단어를 조합하여 가능한 단어인지 검사하는 방식을 통해 머쓱이의 조카가 말할수 있는 단어인지 추론함
build_str 은 초기값은 '' 인 빈 문자열로 babble의 단어의 철자 (can_babel에 선언)가 [a,y,w,m] 인경우에 대해 각 [aya,ye,woo,ma] 를 build_str에 추가하였습니다. 만약 babble의 단어중 [a,y,w,m] 에 포함되지않는 철자가 나타날 경우 ?를 기본값으로 build_str에 추가하여 while 조건을 탈출하게됩니다.
build_str 과 babble 이 일치하는경우 이경우는 조카가 발음할수있으므로 answer+1 후 조건을 탈출합니다.
babble[len(build_str)] in ban 의경우 이경우는 해당 철자가 2번 이상 나올경우 탈출하는 조건문으로
ban 리스트에는 사용된 문자가 추가됩니다.
# 옹알이(1)
def solution(babbling):
can_babel = {'a': 'aya', 'y': 'ye', 'w': 'woo', 'm': 'ma'}
answer = 0
for babble in babbling:
ban = []
build_str = ''
while build_str in babble:
# break point
if '?' in build_str:
break
if build_str == babble:
answer += 1
break
if babble[len(build_str)] in ban:
break
ban.append(babble[len(build_str)])
build_str += can_babel.get(babble[len(build_str)], '?')
return answer