해결된 질문
작성
·
63
1
강의 영상마다 질문이 있으면 언제든 그리고 바로 질문 남겨주세요! 질문할 때 가장 정확하게 이해할 수 있습니다.
해당 영상과 관련된 질문들을 해주실 때 제가 가장 정확히 답변 드릴 수 있습니다!
취업 전반의 상담이나, "제 코드가 왜 틀렸는지 알려주세요"와 같이 광범위한 질문은, 질문자의 상황에 따라 답변이 달라질 수 있기 때문에, 정확한 답변을 드리기가 어렵습니다 :(
이런 분들을 위해서는 멘토링 항목으로 별도 제공하고 있으니, 다음 링크를 참고해주세요!
이 링크를 통해서는 본인의 코드가 왜 틀렸는지 모를 때 질문을 주셔도 좋고, 취업 전반(면접 준비, 자소서, CS 면접 등)에 관련한 질문을 주시면 답변 드리겠습니다 :)
"이 질문은 해도 되나?"라는 생각이 드신다면 우선 남겨주세요! 제가 답변 드리기 어려운 건 멘토링에 올려 달라고 재요청 드리겠습니다 🙂
좋은 강의 감사합니다.
노드간의 거리를 계산하는 유형을 정리하실 때 "DFS의 인자에 count 변수를 전달하는 방식" 에 대해서 말씀해주셨습니다. 제가 이해한 바로는 사이클이 없는 구조, 즉 u와 v간의 경로가 하나만 존재할 경우에만 유효하다는 생각이 듭니다.
혹시 제가 오해한 부분이 있다면 알려주시길 바랍니다.
감사합니다.
답변 1
1
안녕하세요 nurugji님 🙂
말씀하신 대로 대부분의 경우에는 사이클이 없는 구조, 즉 트리 형태에서 주로 사용됩니다. 이 경우, 노드 u와 v 사이의 경로는 유일하기 때문에 count 변수를 이용해 거리를 쉽게 계산할 수 있습니다.
그러나 사이클이 존재하는 그래프에서도 몇 가지 추가 처리를 통해 이 방식을 사용할 수 있습니다. 예를 들어:
방문 여부(visited 배열)를 관리하여 이미 방문한 노드를 다시 방문하지 않도록 처리하면 사이클을 무시할 수 있습니다.
DFS 시작점을 고정하고, 각 노드의 거리를 기준점(루트 또는 특정 노드)으로 계산한 후, 두 노드의 거리를 비교하여 결과를 구할 수 있습니다.
하지만 일반적으로 사이클이 있는 그래프에서는 BFS나 다익스트라 알고리즘과 같은 방법이 더 안정적이고 효율적일 수 있습니다.
따라서 사이클이 없는 경우에는 설명 드린 방식이 유효하지만, 사이클이 있는 경우에는 위와 같은 추가 처리를 고려해 주시면 더 정확한 결과를 얻을 수 있습니다.
혹시 추가로 궁금하신 부분이 있다면 알려주세요! 감사합니다 :)