문제
사전에 알파벳 모음 '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 ← 원하는 값의 인덱스를 찾을 수 있다.
◦
동일 값 있을 때는 제일 앞쪽 인덱스로 반환되는듯
◦