코드
from itertools import permutations
def solution(babbling):
answer = 0
perm = [] # 가능한 모든 말
for i in range(4):
perm.append(list(permutations(["aya", "ye", "woo", "ma"], i+1)))
for i in range(len(perm)): # 튜플로 구성된 순열을 하나의 문자열로 바꿈
for j in range(len(perm[i])):
perm[i][j] = ''.join(list(perm[i][j]))
for b in babbling: # 발음할 수 있는 단어인지 확인
for i in range(len(perm)):
if b in perm[i]:
answer += 1
return answer
순열을 사용하여 문제를 해결하였다.
먼저, 가능한 발음인 "aya", "ye", "woo", "ma"를 가지고 할 수 있는 발음을 permutations를 이용해 perm에 저장하였다.
1개를 사용했을 때, 2개를 사용했을 때, 3개를 사용했을 때, 4개 모두를 사용했을 때 가능한 발음을 모두 찾았다.
두 번째로, perm은 튜플형태로 조합들이 저장되기 때문에 리스트 형태로 바꿔주었다. 그런 다음 한 리스트 안에 있는 조합들을 ''. join()을 이용하여 하나의 문장으로 이어주었다.
마지막으로, babbling으로 주어지는 값이 perm 안에 있는지 확인하면 된다. 있으면 가능한 발음이므로 발음할 수 있는 개수를 저장하는 answer에 +1을 해준다.
이렇게 적고 보니 굉장히 단순해 보이는 문제 이긴 하나, 어떻게 가능한 발음들을 조합하여 주어지는 말이 가능한지 판별할 수 있을지 처음에는 무척 당황스러웠다.
반응형