Programmers

[프로그래머스 / 파이썬 풀이] 모음사전

Hoo_Dev 2023. 1. 6. 10:26

풀이 1

from itertools import product

def solution(word):
    answer = 0
    words = ['A', 'E', 'I', 'O', 'U']
    ans_lst = []
    for i in range(1, len(words) + 1):
        for j in product(words, repeat = i):
            ans_lst.append(''.join(list(j)))
    ans_lst.sort()
    
    answer = ans_lst.index(word) + 1
    
    return answer

itertools 모듈의 product 함수(중복순열)를 사용.

해당 된 모음들의 모든 순열을 구한 뒤 정렬하여 인덱스를 통해 위치를 찾아준다.

 

풀이 2

def solution(word):
    global answer
    answer = 0
    alphas = ['A', 'E', 'I', 'O', 'U']
    
    def dfs(result):
        global answer
        answer += 1
        
        if result == word:
            return True
        
        if len(result) == 5:
            return False
        
        for alpha in alphas:
            if dfs(result + alpha) == True:
                return True
            
    for alpha in alphas:
        if dfs(alpha) == True:
            return answer
        
    return answer

재귀를 사용 한 풀이. 재귀는 질문하기의 도움을 받아 풀이했다. 반복문을 통해 각 알파벳을 순회시키고, 길이가 5가 되면 리턴을 해주고 그 전 재귀로 돌아가 문자열을 추가하는 방식. 재귀는 볼때마다 헷갈린다.