[프로그래머스/Python] 모음사전

고운·2024년 3월 1일

알고리즘

목록 보기
46/94

문제 설명

사전에 알파벳 모음 'A', 'E', 'I', 'O', 'U'만을 사용하여 만들 수 있는, 길이 5 이하의 모든 단어가 수록되어 있습니다. 사전에서 첫 번째 단어는 "A"이고, 그다음은 "AA"이며, 마지막 단어는 "UUUUU"입니다.

단어 하나 word가 매개변수로 주어질 때, 이 단어가 사전에서 몇 번째 단어인지 return 하도록 solution 함수를 완성해주세요.

제한사항

  • word의 길이는 1 이상 5 이하입니다.
  • word는 알파벳 대문자 'A', 'E', 'I', 'O', 'U'로만 이루어져 있습니다.

입출력 예

wordresult
"AAAAE"6
"AAAE"10
"I"1563
"EIO"1189

입출력 예 설명

입출력 예 #1

사전에서 첫 번째 단어는 "A"이고, 그다음은 "AA", "AAA", "AAAA", "AAAAA", "AAAAE", ... 와 같습니다. "AAAAE"는 사전에서 6번째 단어입니다.

입출력 예 #2

"AAAE"는 "A", "AA", "AAA", "AAAA", "AAAAA", "AAAAE", "AAAAI", "AAAAO", "AAAAU"의 다음인 10번째 단어입니다.

입출력 예 #3

"I"는 1563번째 단어입니다.

입출력 예 #4

"EIO"는 1189번째 단어입니다.


풀이
보자마자 itertools를 부르짖었따.
product는 처음 써봤는데 잘 기억해둬야겠다 itertools 진짜 간편하고 좋은데 이렇게 시간복잡도를 걱정하지 않아도 되는 문제에서만 쓸 수 있는게 아쉽다
아무튼 중복순열을 사용해서 가능한 모든 조합을 리스트에 저장해서 사전을 만들어줬다
이후 이를 사전순으로 정렬하고 index 메소드를 사용해서 인덱스 정보를 얻은 후에 1을 더해줬다

코드

from itertools import product

def solution(word):
    word_dict = []
    for i in range(1,6):
        for elem in product(['A','E','I','O','U'], repeat=i):
            word_dict.append("".join(elem))
    word_dict.sort()
    return word_dict.index(word)+1
profile
무럭무럭 성장하는 개린이 공부 공간

0개의 댓글