문제

[프로그래머스] 모음사전 (LV. 2)

요약

  • A, E, I, O, U 만으로 이루어진 길이 5이하의 단어가 사전식으로 정렬되어 있다.
  • 단어가 주어지면, 사전 상으로 몇 번째 단어인지 구하라.

분류

  • 완전 탐색
  • 수학(등비수열의 합)

풀이

1. 반복문을 이용한 풀이 (완전 탐색)

  • 각 단어의 글자를 단어의 순위로 변환한다. (EX - A = 0, AAAE = 0001)
  • 사전상으로 단어가 정렬되는 알고리즘을 구현한다.
def solution(word):
    vowels = ['A', 'E', 'I', 'O', 'U']
    word = list(word)
    for i in range(len(word)):
        word[i] = vowels.index(word[i])
    arr = []; cnt = 0
    while word != arr:
        if len(arr) < 5 :
            arr.append(0)
        else :
            if arr[-1] == 4:
                while arr[-1] == 4 :
                    arr.pop()
                arr[-1] += 1
            else :
                arr[-1] += 1
        cnt += 1
    return cnt

2. 등비수열의 합을 이용한 풀이

def solution(word):
    answer = 0
    for i, n in enumerate(word):
        answer += (5 ** (5 - i) - 1) / (5 - 1) * "AEIOU".index(n) + 1
    return answer