알고리즘/Python 코테
99클럽 코테 스터디 14일차 TIL(그래프)
집 밖은 위험해
2024. 6. 13. 22:16
📎 문제링크
https://leetcode.com/problems/find-if-path-exists-in-graph/submissions/1287047223/
🤔 문제 이해 및 알고리즘 유형
알고리즘 유형
DFS
💻 틀린 코드
class Solution:
def validPath(self, n: int, edges: List[List[int]], source: int, destination: int) -> bool:
edge_list=[[] for _ in range(n)]
visited=[False]*(n+1)
def dfs(start,visited):
if start==destination:
return True
visited[start]=True
for e in edge_list[start]:
if visited[e]==False:
dfs(e,visited)
for edge in edges:
edge_list[edge[0]].append(edge[1])
edge_list[edge[1]].append(edge[0])
if dfs(source,visited)==True:
return True
else:
return False
👍 해결한 코드
class Solution:
def validPath(self, n: int, edges: List[List[int]], source: int, destination: int) -> bool:
edge_list = [[] for _ in range(n)]
for edge in edges:
edge_list[edge[0]].append(edge[1])
edge_list[edge[1]].append(edge[0])
visited = [False] * n
def dfs(start):
if start == destination:
return True
visited[start] = True
for e in edge_list[start]:
if not visited[e]:
if dfs(e):
return True
return False
return dfs(source)
✔ 생각해봐야 할 점
방법을 접근하는 것은 맞는데 DFS를 돌렸을 때 true 값이 나오면 return True를 해줘야 하는 것을 생각하지 못했다. 한번 더 생각하자.