https://programmers.co.kr/learn/courses/30/lessons/84512
"""
1. 아이디어
2. 시간복잡도
"""
from itertools import product
def solution(word):
vowels = "AEIOU"
vowels1 = list(vowels)
vowels2 = [ ''.join(word) for word in product(vowels, repeat=2) ]
vowels3 = [ ''.join(word) for word in product(vowels, repeat=3) ]
vowels4 = [ ''.join(word) for word in product(vowels, repeat=4) ]
vowels5 = [ ''.join(word) for word in product(vowels, repeat=5) ]
vowel_dict = vowels1 + vowels2 + vowels3 + vowels4 + vowels5
vowel_dict.sort()
return vowel_dict.index(word) + 1
위의 문제의 핵심은 product 함수와 list의 index함수를 활용할 수 있는가 입니다.
product 함수는 곱집합을 구하는 함수로 자세한 사항은 다음 블로그를 참조하면 이해가 쉬울 것입니다.
https://programmers.co.kr/learn/courses/4008/lessons/12835
그 다음 list의 index함수는 리스트 내에서 인덱스 값을 반환해주는 함수로 우리가 흔히 생각하는 숫자보다 -1 작기 때문에 return을 할때 +1을 해주었습니다.
참고로 마지막에 리스트를 sort() 해준 이유는 문제에서 요구한 사전 순으로 배치하기 위함 입니다. 파이썬에서 문자열의 sort()는 사전 순으로 정렬이 됩니다.