프로그래머스 알고리즘: 모음사전 (lv2)

sen·2022년 10월 10일
0

https://school.programmers.co.kr/learn/courses/30/lessons/84512?language=python3


def solution(word):
    answer = 0
    translate = {'A': 0, 'E': 1, 'I': 2, 'O': 3, 'U': 4}
    sum_list = [0, 5**1+5**0, 5**2+5**1+5**0, 5**3+5**2+5**1+5**0, 
               5**4+5**3+5**2+5**1+5**0]
    
    for spell, num in zip(word, range(5, 0, -1)):
        # 밑 자리들의 전체 개수 + 현재 자리의 개수
        answer += sum_list[num-1] * translate[spell]
        answer += 1 if num > 1 else translate[spell] + 1
    return answer

왠만한 3레벨 보다 어렵고 특이했던 문제

  • 사전식 정렬 이 일반 정렬과 헷갈렸다
  • 반복문 안에서 현재 spell의 밑 자리에 해당하는 전체 조합 개수
    (ex. A_ _ _ _ 이면, 아래 네 자리에서 만들 수 있는 전체 단어 조합 개수)
    를 구한 후, 현재 자리를 위해 1을 더해줬다
  • 뭔가 sum_list 등 반복되는 로직에 해당하는 코드를 줄일 수 있을 것 같았는데... 떠올리기 어려워서 우선 이렇게 제출했다
    -> 제출 후 다른 사람의 풀이를 살펴보니 원하는 코드를 찾았다
def solution(word):
    answer = 0
    for i, n in enumerate(word):
        answer += (5 ** (5 - i) - 1) / (5 - 1) * "AEIOU".index(n) + 1
    return answer
profile
𝙝𝙞 𝙩𝙝𝙚𝙧𝙚 😎

0개의 댓글