Posts 5Week 모음 사전 [Python]
Post
Cancel

5Week 모음 사전 [Python]

URL https://programmers.co.kr/learn/courses/30/lessons/84512

문제 설명

  • 사전에 알파벳 모음 ‘A’, ‘E’, ‘I’, ‘O’, ‘U’만을 사용하여 만들 수 있는, 길이 5 이하의 모든 단어가 수록되어 있습니다. 사전에서 첫 번째 단어는 “A”이고, 그다음은 “AA”이며, 마지막 단어는 “UUUUU”입니다.
  • 단어 하나 word가 매개변수로 주어질 때, 이 단어가 사전에서 몇 번째 단어인지 return 하도록 solution 함수를 완성해주세요.

제한사항

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

문제풀이

  • 일단 product 함수를 통해 AEIOU로 만들수 있는 모든 단어의 경우의 수를 조합(1~5까지)한다
  • AEIOU는 모음의 순서대로 이기 때문에 sort를 해주면 원하는 순서대로 나온다.
  • 이후 입력받은 word의 index를 찾아주고 +1(index는 0부터 시작)해주면 끝
  • 단어의 종류가 3905개 밖에 안되기 때문에 가능했다. 만약에 단어의 경우의 수가 더 많아지면 해당 방식으론 불가능하다.
  • 아무래도 문제 출제의도는 패턴을 찾아서 하는것인듯..하다. (구글링 해보니 781, 156, 31, 6, 1의 패턴이 있다고 한다.)
1
2
3
4
5
6
from itertools import product
def solution(word):
    word_dict = []
    for i in range(1,6):
        word_dict.extend(list(map(''.join, product(['A','E','I','O','U'], repeat=i))))
    return sorted(word_dict).index(word) + 1
1
2
word = 'AAAAE'
solution(word)
1
6
1
2
word = 'AAAE'
solution(word)
1
10
1
2
word = 'I'
solution(word)
1
1563
1
2
word = 'EIO'
solution(word)
1
1189
This post is licensed under CC BY 4.0 by the author.