본문 바로가기
코딩테스트!(프로그래머스 & 백준)/프로그래머스-Python

코딩테스트--모음 사전 (프로그래머스 / 파이썬)

by Lee_story_.. 2022. 5. 16.
728x90

https://programmers.co.kr/learn/courses/30/lessons/84512

 

코딩테스트 연습 - 모음사전

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

programmers.co.kr

 


 

문제 설명

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

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

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

 

입출력 예  word                                                                         result
"AAAAE" 6
"AAAE" 10
"I" 1563
"EIO" 1189

요약하면!

알파벳 모음 'A', 'E', 'I', 'O', 'U'을 이용해서 5글자 이하인 단어들을 만드는데

 

이제 이것들을 사전식으로 정렬해서 주어진 word가 몇번째인지 찾는 문제.....

 

사전식으로 어떻게 정렬할지가 문제네요....

 

하지만 이 부분도 재귀를 이용하면 쉽게 구현이 가능하네요;;(여기서 엄청 헤맸어요... 조합을 통해서 만들었거든요 ㅋㅋ)

 

시작!

 

 

제일 핵심 부분인 사전식 배열 만들기!

 

def all_word(cnt, w):
        if cnt == 5:
            return
        for i in range(len(words)):
                word_list.append(w + words[i])
                all_word(cnt + 1, w + words[i])

재귀를 돌리면 순서가 A AA AE AI..... UUUUU까지 가겠네요 

cnt는 0부터 시작해서 5가 되면 6 글자니까 멈춰주고.. 이게 끝이네요

 

함수 실행해주고 

    all_word(0, "")
    
    return word_list.index(word) + 1

사전 배열. index(찾을 단어)로 인덱스를 찾아줍시다.(인덱스는 0부터 시작이니 +1)

 

 

*all

def solution(word):
    answer = 0
    word_list = []
    words = "AEIOU"
    
    def all_word(cnt, w):
        if cnt == 5:
            return
        for i in range(len(words)):
                word_list.append(w + words[i])
                all_word(cnt + 1, w + words[i])
                
            
    all_word(0, "")
    
    return word_list.index(word) + 1

 

 

문자열 조합인 줄 알고 조합 쓰고 그걸 따로 정렬하려 했지만 이렇게 푸는 방법도 있네요...!

하나 배워가네요 ㅎ

 

 

틀린 점이 있다면 댓 달아주세요!

 

댓글