Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 백준 16719
- MSA
- 백준 15685
- 프로그래머스
- java
- JPA
- Kotlin
- with recursive
- Spring
- 파이썬
- 백준 17779
- java 기술면접
- springboot
- 백준 16236
- 프로래머스
- spring oauth
- 백준 파이썬
- sql 기술면접
- 백준
- re.split
- Spring Boot
- 백준 16235
- MySQL
- 백준 19238
- 웹어플리케이션 서버
- JVM
- Coroutine
- spring cloud
- spring security
- 백준 17626
Archives
- Today
- Total
시작이 반
[프로그래머스] 단어 변환(python 파이썬) 본문
SMALL
result = list()
def solution(begin, target, words):
global result
answer = 0
if target not in words:
return 0
elif target == begin:
return 0
visited = [False] * len(words)
dfs(begin, target, words, visited, answer)
return min(result)
def dfs(begin, target, words, visited, answer):
global result
if begin == target:
return result.append(answer)
change = list()
for word in words: #바꿀수 있는 단어 찾기
count = 0
for i in range(len(word)):
if begin[i] != word[i]:
count += 1
if count == 1:
change.append(word)
for word in change:
if not visited[words.index(word)]: #방문한 단어가 아니면
visited[words.index(word)] = True #방문처리
dfs(word, target, words, visited, answer + 1) #재귀
visited[words.index(word)] = False #방문처리한거 되돌리기
solution("hit", "cog", a)
dfs 백트래킹을 사용하여 문제를 해결하였다.
먼저 begin 단어에서 words중 바꿀수 있는 단어를 찾는다.
찾은 단어들을 방문했는지 확인한다.
방문을 하지 않았으면 dfs(재귀)를 돌린다.
방문했던 단어를 다시 False로 바꾼다.
LIST
'알고리즘 > Programmers' 카테고리의 다른 글
[프로그래머스] 정수 삼각형(python 파이썬) (0) | 2021.03.11 |
---|---|
[프로그래머스] 입국심사(python 파이썬) (0) | 2021.03.11 |
[프로그래머스] 여행경로(python 파이썬) (0) | 2021.03.10 |
[프로그래머스] 네트워크(python 파이썬) (0) | 2021.03.10 |
[프로그래머스] 타겟넘버 (python 파이썬) (0) | 2021.03.10 |