[Python] 프로그래머스 - Weekly Challenge 5주차

728x90
반응형

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

 

코딩테스트 연습 - 5주차

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

programmers.co.kr

# 모음이 5개 밖에 없고 길이도 5가 최대이므로 A부터 UUUUU까지 모든 단어를 만든뒤

   dic에 넣고 찾고자 하는 단어의 index를 반환하는 식으로 짰다.

 

1. 처음에 11번째줄에서 반복문을 돌며 add_word('A'), add_word('E') ... add_word('U')를 실행한다.

 

2. add_word함수: 문자열 s를 넘겨받아 s의 길이가 6이 되면 return해준다.

                               dic에 s를 append해주고 ('A', 'E', 'I', 'O', 'U')를 반복문을 돌며 현재 s에

                               다음 문자를 더해주고 add_word(s + i)를 실행해준다.

 

# 처음에 add_word('A')가 실행되고 add_word('AA') -> add_word('AAA') ... add_word('AAAAA')까지

   간 다음 add_word('AAAAAA')에서 길이가 6이므로 return되고 add_word('AAAAE')가 실행되서

   결국 사전순으로 dic에 모든 단어가 들어가게 된다.

   따라서 마지막에 dic.index(word) + 1로 원하는 위치를 찾아낼 수 있다.

 

def solution(word):
    dic = []
    def add_word(s):
        if len(s) == 6:
            return
        dic.append(s)
        
        for i in ('A', 'E', 'I', 'O', 'U'):
            add_word(s + i)
    
    for i in ('A', 'E', 'I', 'O', 'U'):
        add_word(i)

    return dic.index(word) + 1
728x90
반응형
TAGS.

Comments