문제 설명
사전에 알파벳 모음 '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에 더하기
'2024 코딩테스트 스터디' 카테고리의 다른 글
[12주_2일차] 프로그래머스-네트워크(Python) (0) | 2024.08.21 |
---|---|
[12주_1일차] 프로그래머스-타겟 넘버(Python) (0) | 2024.08.20 |
[11주_6일차] 프로그래머스-전력망을 둘로 나누기(Python) (0) | 2024.08.18 |
[11주_5일차] 프로그래머스-피로도(Python) (0) | 2024.08.17 |
[11주_4일차] 프로그래머스-카펫(Python) (0) | 2024.08.16 |