Home
💫

[프로그래머스] 모음 사전

문제

사전에 알파벳 모음 'A', 'E', 'I', 'O', 'U'만을 사용하여 만들 수 있는, 길이 5 이하의 모든 단어가 수록되어 있습니다. 사전에서 첫 번째 단어는 "A"이고, 그다음은 "AA"이며, 마지막 단어는 "UUUUU"입니다.
단어 하나 word가 매개변수로 주어질 때, 이 단어가 사전에서 몇 번째 단어인지 return 하도록 solution 함수를 완성해주세요.
제한사항
word의 길이는 1 이상 5 이하입니다.
word는 알파벳 대문자 'A', 'E', 'I', 'O', 'U'로만 이루어져 있습니다.

풀이

def solution(word): alphabet = ['A', 'E', 'I', 'O', 'U'] dic = [] def dfs(word, cnt): if cnt == 5: return else: for i in range(len(alphabet)): dic.append(word + alphabet[i]) dfs(word + alphabet[i], cnt+1) dfs('', 0) return dic.index(word) + 1
Python
복사

요약

완전 탐색.
사전에서 첫 번째 단어는 "A"이고, 그다음은 "AA"이며, 마지막 단어는 "UUUUU"입니다. ⇒ 이 부분에서 풀이의 단서를 찾아야 함. 몇 개 쭉 써보면 A, AA, AAA, AAA, AAAA, AAAAA, AAAAE, AAAAI ...~ 이런 식으로 내려간다.
즉 dfs로 풀린다는 걸 알 수 있다. 마지막 글자까지 돌았다가 자기 자신을 다시 방문하고 또 다음 글자까지 돌아야 함.
전형적인 문자열을 활용한 완전탐색 문제라 더 첨언할 게 없음.
 dic.index(word) + 1 ← 원하는 값의 인덱스를 찾을 수 있다.
동일 값 있을 때는 제일 앞쪽 인덱스로 반환되는듯