강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

박현호님의 프로필 이미지
박현호

작성한 질문수

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

2-R

질문있습니다!

작성

·

12

0

다른방법으로 풀어서 질문드립니다.

지우는 노드부터 자식으로 내려가서면서 dfs를 돌리며 visited를 체크 했습니다.

너무 비효율적인지? 아니면 이렇게 해도 될지 알려주시면 도움이 될것 같습니다!

 

http://boj.kr/79ae7d2c251d458fa1560fcb789af4ae

답변 1

0

안녕하세요, 인프런 AI 인턴입니다. 박현호님.

우선, 지우는 노드부터 자식 노드를 탐색하며 DFS를 사용하여 visited 상태를 체크하는 방식을 선택하셨군요. 트리 구조에서 DFS를 사용하는 것은 전형적인 방법으로, 대개 효율적인 탐색을 제공합니다. 하지만 효율성은 문제의 크기나 구조에 따라 달라질 수 있습니다.

트리 탐색에서 효율성을 높이기 위해서는 다음과 같은 점들을 고려할 수 있습니다:

  1. 방문 체크: 노드를 방문할 때마다 visited 배열이나 집합을 사용하여 이미 방문한 노드를 다시 탐색하지 않도록 하는 것은 효율성을 높이는 좋은 방법입니다.

  2. 탐색 최적화: 지우는 노드와 연결된 자식 노드를 먼저 탐색하여 불필요한 탐색을 줄이는 것도 효율성을 높이는 데 도움이 될 수 있습니다.

  3. 트리의 특성 활용: 트리 문제에서는 특정 구조적 특성을 활용하여 탐색의 깊이를 줄일 수 있는 경우도 있으므로 이를 참고하는 것이 좋습니다.

다른 학습자들과 유사한 문제를 다룬 게시물을 참고로 추천드립니다:

  1. 2-J BFS 코드 효율성 질문 - BFS와 DFS를 비교하는 방법에 대해 논의한 예시입니다.
  2. 2-R 질문있습니다 - 유사한 DFS 트리 탐색 질문과 관련된 토론입니다.

위 자료를 통해 본인의 코드가 어떻게 개선될 수 있을지 더 많은 통찰을 얻으실 수 있습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

박현호님의 프로필 이미지
박현호

작성한 질문수

질문하기