티스토리 뷰
<풀이>
- 재귀함수를 사용하여 DFS를 적용하였다.
- 철자가 하나만 다른 단어인지 확인하는 함수 canChange를 정의하였다.
- 현재 answer보다 함수 스택인 k가 크다면 바로 반환한다.
- 현재 dfs 함수에서의 cur_word와 target이 같다면 answer에 k를 할당한다.
- words를 반복하여 이미 바꾼 단어이거나 canChange가 True를 반환한다면 새로운 dfs함수를 호출한다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
def solution(begin, target, words):
global answer
answer = 0xffffff
lew_b = len(begin)
def canChange(first, second):
diff = 0
for i in range(lew_b):
if first[i] != second[i]:
diff += 1
if diff > 1:
return False
if diff == 1:
return True
return False
len_w = len(words)
visited = [0 for _ in range(len_w)]
def dfs(cur_word, k):
global answer
if k > answer:
return
if cur_word == target:
answer = k
return
for w in range(len_w):
if not visited[w] and canChange(cur_word, words[w]):
visited[w] = 1
dfs(words[w], k + 1)
visited[w] = 0
dfs(begin, 0)
if answer == 0xffffff:
answer = 0
return answer
|
cs |
반응형
'알고리즘 문제 풀이 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 소수 찾기 (0) | 2020.12.16 |
---|---|
[프로그래머스] 모의고사 (0) | 2020.12.16 |
[프로그래머스] 네트워크 (0) | 2020.12.14 |
[프로그래머스] 타겟 넘버 (0) | 2020.12.14 |
[프로그래머스] 프린터 (0) | 2020.12.13 |
댓글