https://school.programmers.co.kr/learn/courses/30/lessons/84512
사전에 알파벳 모음 'A', 'E', 'I', 'O', 'U'만을 사용하여 만들 수 있는, 길이 5 이하의 모든 단어가 수록되어 있습니다. 사전에서 첫 번째 단어는 "A"이고, 그다음은 "AA"이며, 마지막 단어는 "UUUUU"입니다.
A AA AAA AAAA AAAAA AAAAE… AAAE AAAU…
word | result |
---|---|
"AAAAE" |
6 |
"AAAE" |
10 |
"I" |
1563 |
"EIO" |
1189 |
빈 문자열에 모음을 하나씩 넣고 dfs를 시작한다.
문자열의 길이가 5을 넘으면 탐색을 중단하고, 현재 문자열이 답과 일치할 경우 인덱스를 따로 저장한 후 탐색이 끝나면 인덱스를 반환한다
answer=0
answer_idx=0
def solution(word):
l=''
def dfs(count, l):
global answer
global answer_idx
if count==6:
return
if l==word:
answer_idx=answer
answer+=1
for i in 'AEIOU':
dfs(count+1, l+i)
dfs(0,l)
return answer_idx
답을 찾아도 탐색을 멈추지 않는 코드
answer=0
answer_idx=0
def solution(word):
l=''
def dfs(count, l):
global answer
global answer_idx
if count==6 or answer_idx!=0:
return
if l==word:
answer_idx=answer
return
answer+=1
for i in 'AEIOU':
dfs(count+1, l+i)
dfs(0,l)
return answer_idx
답을 찾으면 탐색을 중단하도록 수정한 코드
시간이 훨씬 줄었다. 더 줄일 수 있을 것 같은데 지금은 방법이 생각이 나지 않음
모르겠음