새소식

알고리즘/프로그래머스

[프로그래머스] [내일은 코딩테스트 with 파이썬 파트1. 문자열 다루기] 문제1) 옹알이(1)(Python)

  • -
728x90
반응형

옹알이(1)

머쓱이는 태어난 지 6개월 된 조카를 돌보고 있습니다. 조카는 아직 "aya", "ye", "woo", "ma" 네 가지 발음을 최대 한 번씩 사용해 조합한(이어 붙인) 발음밖에 하지 못합니다. 문자열 배열 babbling이 매개변수로 주어질 때, 머쓱이의 조카가 발음할 수 있는 단어의 개수를 return하도록 solution 함수를 완성해주세요.

from itertools import permutations

def solution(babbling):
    answer = 0
    speak = ["aya", "ye", "woo", "ma"]
    word = []
    
    for i in range(1, len(speak)+1):
        for j in permutations(speak, i):
            word.append(''.join(j))
            
    for i in babbling:
        if i in word:
            answer += 1
            
    return answer

permutation이란 순열을 골라 나열해주는 함수이다.

form permutation import itertools

arr = ['A', 'B', 'C']
nPr = itertools.permutations(arr, 2)
print(list(nPr))

결과 : [('A', 'B'), ('A', 'C'), ('B', 'A'), ('B', 'C'), ('C', 'A'), ('C', 'B')]

 

speak의 길이만큼 반복해서 문자열 형식으로 순열을 만들어 word 리스트에 추가한다.

그리고 babbling 단어가 word 안에 있으면 word += 1을 해준다.

 

range(0, len(speak))로 하게 되면 길이는 똑같지만, 순열조합에서 0개의 조합이 생겨서 테스트케이스에서 에러가 생긴다.

728x90
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.