https://school.programmers.co.kr/learn/courses/30/lessons/43163
핵심포인트
✅ dfs와 bfs 둘다의 방식으로 문제를 풀수 있는데 dfs에서 if문을 이중으로 한줄로 쓸수 있는 부분이 신기하기도 하고 효율적으로 보였다.. 익숙하지는 않지만 자연스럽게 쓸수 있도록 문제를 많이 풀어봐야겠다.
#dfs
answer=0
def dfs(begin,target,words,visited):
global answer
stacks=[begin]
while stacks:
stack=stacks.pop()
if stack==target:
return answer
for w in range(0,len(words)):
if len([i for i in range(0,len(words[w])) if words[w][i]!=stack[i]])==1: #요부분!
if visited[w]!=0:
continue
visited[w]=1
stacks.append(words[w])
answer+=1
def solution(begin,target,words):
global answer
if target not in words:
return 0
visited=[0 for i in words]
dfs(begin,target,words,visited)
return answer
#bfs
from collections import deque
def solution(begin,target,words):
answer=0
q=deque()
q.append([begin,0])
V=[0 for i in range(len(words))]
while q:
word,cnt=q.popleft()
if word==target:
answer=cnt
break
for i in range(len(words)):
temp_cnt=0
if not V[i]:
for j in range(len(word)):
if word[j]!=words[i][j]:
temp_cnt+=1
if temp_cnt==1:
q.append([words[i],cnt+1])
V[i]=1
return answer
'코테 준비 > 프로그래머스' 카테고리의 다른 글
[level 3] N으로 표현 (0) | 2023.11.05 |
---|---|
[level 3] 여행경로 (0) | 2023.11.05 |
[level 2] 네트워크 (0) | 2023.09.30 |
[level 2] 타겟넘버 (0) | 2023.09.30 |
[SQL_JOIN] (0) | 2023.06.13 |