본문 바로가기

2024 코딩테스트 스터디

[11주_7일차] 프로그래머스-모음사전(Python)

문제 설명

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

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

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

 

<코드>

def solution(word):
    letters = ['A', 'E', 'I', 'O', 'U']
    result = 0
    
    # 각 자리수별 가중치를 계산
    position_weight = []
    for i in range(5):
        weight = sum(5 ** j for j in range(5 - i))
        position_weight.append(weight)
    
    # 입력된 word에 대해 순서 계산
    for i, char in enumerate(word):
        index = letters.index(char)
        result += index * position_weight[i] + 1

    return result

 

<풀이과정>

 

  • 가중치 계산:
    • position_weight 리스트를 동적으로 계산
    • 각 자리의 가중치는 해당 자리 이후로 나올 수 있는 모든 자리수의 가능한 단어 수를 합산해 계산
    • ex) 첫 번째 자리의 가중치는 5^4 + 5^3 + 5^2 + 5^1 + 5^0
  • 순서 계산:
    • 각 문자가 특정 자리에 있을 때 그 문자가 사전에서 몇 번째에 위치하는지를 계산하여 result에 더하기