깊이/너비 우선 탐색 (DFS/BFS)
🌏 문제
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
👽 풀이 ➡️ DFS 이용
💫 문제 분석
문제에서 한 번에 한 개의 알파벳만 바꿀 수 있다고 주어져서
처음에 len(set(w1) - set(w2)) == 1 이렇게 접근했는데
이 경우에 'aaa'와 'aab'를 비교하게 되면 0이 나오기 때문에 테스트케이스 3번에서 실패가 뜬다😢
그래서 두 문자를 비교하는 함수를 따로 만들어줬다.
def compare(w1, w2):
diff = 0
for i in range(len(w1)):
if w1[i] == w2[i]:
continue
else:
diff += 1
if diff > 1:
return False
if diff == 1:
return True
return False
💫 최종 코드
def solution(begin, target, words):
global answer
answer = 0
dic = {word : 0 for word in words}
def compare(w1, w2):
diff = 0
for i in range(len(w1)):
if w1[i] == w2[i]:
continue
else:
diff += 1
if diff > 1:
return False
if diff == 1:
return True
return False
def dfs(word, idx):
global answer
if idx > len(words):
return
if word == target:
if answer == 0:
answer = idx
else:
answer = min(answer, idx)
for i in words:
if compare(i, word) and dic[i] == 0:
dic[i] = 1
dfs(i, idx + 1)
dic[i] = 0
dfs(begin, 0)
return answer
728x90
'💡코딩테스트 > 프로그래머스' 카테고리의 다른 글
[프로그래머스 | 파이썬 python] 입국심사 (0) | 2023.05.20 |
---|---|
[프로그래머스 | 파이썬 python] 여행경로 (0) | 2023.05.18 |
[프로그래머스 | 파이썬 python] 게임 맵 최단거리 (0) | 2023.05.17 |
[프로그래머스 | 파이썬 python] 네트워크 (0) | 2023.05.16 |
[프로그래머스 | 파이썬 python] 타겟 넘버 (0) | 2023.05.16 |
깊이/너비 우선 탐색 (DFS/BFS)
🌏 문제
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
👽 풀이 ➡️ DFS 이용
💫 문제 분석
문제에서 한 번에 한 개의 알파벳만 바꿀 수 있다고 주어져서
처음에 len(set(w1) - set(w2)) == 1 이렇게 접근했는데
이 경우에 'aaa'와 'aab'를 비교하게 되면 0이 나오기 때문에 테스트케이스 3번에서 실패가 뜬다😢
그래서 두 문자를 비교하는 함수를 따로 만들어줬다.
def compare(w1, w2):
diff = 0
for i in range(len(w1)):
if w1[i] == w2[i]:
continue
else:
diff += 1
if diff > 1:
return False
if diff == 1:
return True
return False
💫 최종 코드
def solution(begin, target, words):
global answer
answer = 0
dic = {word : 0 for word in words}
def compare(w1, w2):
diff = 0
for i in range(len(w1)):
if w1[i] == w2[i]:
continue
else:
diff += 1
if diff > 1:
return False
if diff == 1:
return True
return False
def dfs(word, idx):
global answer
if idx > len(words):
return
if word == target:
if answer == 0:
answer = idx
else:
answer = min(answer, idx)
for i in words:
if compare(i, word) and dic[i] == 0:
dic[i] = 1
dfs(i, idx + 1)
dic[i] = 0
dfs(begin, 0)
return answer
728x90
'💡코딩테스트 > 프로그래머스' 카테고리의 다른 글
[프로그래머스 | 파이썬 python] 입국심사 (0) | 2023.05.20 |
---|---|
[프로그래머스 | 파이썬 python] 여행경로 (0) | 2023.05.18 |
[프로그래머스 | 파이썬 python] 게임 맵 최단거리 (0) | 2023.05.17 |
[프로그래머스 | 파이썬 python] 네트워크 (0) | 2023.05.16 |
[프로그래머스 | 파이썬 python] 타겟 넘버 (0) | 2023.05.16 |