프로그래머스 모음사전

맹민재·2023년 4월 6일
0

알고리즘

목록 보기
42/134
vowel = {"A":0, "E":1, 'I':2, "O":3, 'U':4}

def powerset(n, k, deph):
    if deph == 4:
        return [[k]]

    result = [[k]]
    tmp = []
    
    for i in range(0, n+1):
        tmp += powerset(n, i, deph+1)
    for i in range(len(tmp)):
        tmp[i] = [k] + tmp[i]
        
    return result + tmp
    
    
def getpowerset(n):
    result = []
        
    for i in range(n+1):
        result += powerset(n, i, 0)
    
    return result

def solution(word):
    answer = 0
    di = getpowerset(4)
    
    f = [0] * len(word)
    for i in range(len(word)):
        f[i] = vowel[word[i]]
        
    for i in range(len(di)):
        if f == di[i]:
            return i+1
    
    return i

"""---------------------------------------------------"""

from itertools import product

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

첫 번째 방법은 재귀를 사용해서 사전에 순서대로 추가해 나가는 방식인데 해당 방식으로 푼 본인 조차도 완벽하게 이해하지 못해서 그냥 itertools의 product를 사용해 풀었다...... 재귀 방식도 정답이긴 했다.....


profile
ㄱH ㅂrㄹ ㅈr

0개의 댓글