오늘의 학습 키워드
</> 그래프
공부한 내용 본인의 언어로 정리하기
class Solution {
public boolean validPath(int n, int[][] edges, int source, int destination) {
Map<Integer, List<Integer>> map = new HashMap<>();
for (int i = 0; i < n; i++) {
map.put(i, new ArrayList<>());
}
for (int[] edge : edges) {
map.get(edge[0]).add(edge[1]);
map.get(edge[1]).add(edge[0]);
}
return dfs(map, source, destination, new HashSet<>());
}
private boolean dfs(Map<Integer, List<Integer>> graph, int current, int destination, Set<Integer> visited) {
if (current == destination) return true;
visited.add(current);
for (int neighbor : graph.get(current)) {
if(!visited.contains(neighbor)) {
if(dfs(graph, neighbor, destination, visited))
return true;
}
}
return false;
}
}
오늘의 회고
오늘 문제는 2시간을 넘게 고민을 해보았지만 결과를 낼 수가 없어, AI와 클럽장님의 도움을 받은 풀이로 진행을 한다.
오늘은 그래프에서 특정 노드(source)에서 다른 노드(destination)까지의 경로가 존재하는지를 확인하는 문제를 해결했습니다. 이 문제를 해결하기 위해 다음과 같은 작업을 수행했습니다:
Map<Integer, List<Integer>> map = new HashMap<>();
for (int i = 0; i < n; i++) {
map.put(i, new ArrayList<>());
}
for (int[] edge : edges) {
map.get(edge[0]).add(edge[1]);
map.get(edge[1]).add(edge[0]);
}
그래프의 모든 노드에 대해 빈 리스트를 초기화한 후, 주어진 간선 정보를 통해 각 노드의 인접 리스트를 업데이트했습니다.
private boolean dfs(Map<Integer, List<Integer>> graph, int current, int destination, Set<Integer> visited) {
if (current == destination) return true;
visited.add(current);
for (int neighbor : graph.get(current)) {
if (!visited.contains(neighbor)) {
if (dfs(graph, neighbor, destination, visited)) return true;
}
}
return false;
}
내일 공부할 것 :
아직 이해를 정확히 하지 못했다... 다시 공부해서 재정리 할 필요가 있다.
문제