머쓱이는 태어난 지 6개월 된 조카를 돌보고 있습니다. 조카는 아직 "aya", "ye", "woo", "ma" 네 가지 발음을 최대 한 번씩 사용해 조합한(이어 붙인) 발음밖에 하지 못합니다. 문자열 배열 babbling이 매개변수로 주어질 때, 머쓱이의 조카가 발음할 수 있는 단어의 개수를 return하도록 solution 함수를 완성해주세요.
해당 문제가 주어졌을 때, 해결하는 방향으로 크게 2가지가 떠올랐다.
1. 주어진 리스트를 차례대로 조카가 할 수 있는 발음을 제거해 나가고 그 결과가 완전히 제거되었는지 확인하는 방법
2. 조카가 할 수 있는 모든 발음의 경우의 수를 추출해 주어진 리스트의 존재 유무를 확인하는 방법
개인적으로 첫 번째 방법보다 두 번째 방법이 재밌을 거 같아 도저해보았고 해결 과정은 아래와 같다
from itertools import permutations
def solution(babbling):
answer = 0
words = ["aya", "ye", "woo", "ma"]
candidates = []
for num in range(len(words)):
words_combi = list(permutations(words, num+1))
for word in words_combi:
candidates.append(''.join(word))
for word in babbling:
if word in candidates:
answer +=1
return answer