728x90
반응형
SMALL
✏️ 문제
문제 파악
보자마자 dfs 재귀로 풀면 되겠다! 했는데 뭐 때문인 지 만든 문자열과 주어진 word가 같음에도 불구하고 리턴 값이 null로 나왔다 ㅠ
찾아보니 코드가 재귀이므로 if 만든 문자열 == word 에 해당되어도 return하면 상위 호출에 return한 값을 가져다주고 남은 반복문, 호출이 계속 진행되게 된다.
그래서 값을 찾았더래도 남은 재귀 호출을 처리하는 과정에서 값이 null로 바뀌게 되어 결국 null이 출력되게 된다.
ps. 목표 단어를 찾았더라도 다른 반복문에서 계속 탐색을 수행하게 되고 재귀 호출의 반환값이 상위 호출로 전달되지 않고 결국 None을 반환하게 된다.
이를 해결하기 위해서는 반환값이 부모 호출로 제대로 전달되도록 하기 위해, 재귀 호출에서 반환된 값을 확인하고 이를 다시 상위 호출로 반환해야 한다.
그러기 위해선 난 다음과 같이 코드를 추가했다.
result = dfs(w, s + d)
if result is not None:
return result
코드
def solution(word):
dic = ['A', 'E', 'I', 'O', 'U']
num = 0
def dfs(w, s):
nonlocal num
if s == w:
return num
if len(s) < 5:
for d in dic:
num += 1
result = dfs(w, s + d)
if result is not None:
return result
return dfs(word, "")
- 다른 사람의 코드
def solution(word):
vowels = ['A', 'E', 'I', 'O', 'U']
answer = 0
for i, char in enumerate(word):
index = vowels.index(char)
for j in range(5 - i):
answer += index * (5 ** j)
answer += 1
return answer
word의 각 위치 문자가 들어오면 그 앞에 있는 문자의 개수들을 answer에 더하는 방법이다.
728x90
반응형
LIST
'PS > 프로그래머스' 카테고리의 다른 글
[Python] 뒤에 있는 큰 수 찾기 (1) | 2024.12.13 |
---|---|
[Python] 롤케이크 자르기 (0) | 2024.12.12 |
[Python] 타겟 넘버 (0) | 2024.12.11 |
[Python] 전화번호 목록 (0) | 2024.12.11 |
[Python] 피로도 (0) | 2024.12.10 |