DFS
아파트 단지 번호 문제는 BFS로 풀어도 되지 않나요?
DFS로 푸신 이유가 있을까요 ?
그리고 BFS는 대충 최단거리 구할때 쓰면 될거 같은데 ( 맞나요 ? )
꼭 DFS를 써야되는 순간은 어떤 순간일지 잘 모르겠습니다..
回答 1
0
안녕하세요 공부좀하자님.
먼저, 아파트 단지 번호 문제는 BFS, DFS 모두 사용 가능한 문제가 맞습니다.
그래프 탐색 알고리즘의 한 예시로서 기본적이고 직관적인 문제를 찾다보니 두 가지 알고리즘을 모두 사용할 수 있는 문제가 선별된 것으로 생각됩니다. 다만, 문제의 난이도가 높아지면 보통 둘 중에 한 개 알고리즘으로만 풀 수 있는 경우가 많습니다.
두 번째로, BFS는 최단경로 탐색을 보장하기 때문에 unweighted graph (엣지의 거리를 모두 1로 간주하는 가중치가 없는 그래프)에서 최단거리를 탐색할 때 용이합니다. 질문자님께서 생각하고 계신 부분이 맞습니다.
DFS의 활용과 관련된 답변을 드리자면, 이론적으로 BFS와 DFS는 상호대체 가능합니다. 그럼에도 메모리 부족 문제로 문제의 난이도가 높아지면 상호대체가 불가능한 경우가 많습니다. 이 경우 재귀적인 특성을 활용하여 메모리 부족 문제를 해결하며, 이를 위해 DFS를 사용한다고 생각해주시면 되겠습니다.
DFS를 사용할 수밖에 없는 한 예시로 스도쿠 문제를 예로 들 수 있습니다. 9x9 스도쿠에 45개의 빈칸이 있는 경우, 각 레벨당 9^n개의 노드를 가지는 의사결정트리가 만들어지며 최대 9^45개의 노드를 검사해야 합니다 (이는 대략적으로 추산한 값입니다. 실제로는 더 적거나 많을 수 있습니다). 이러한 트리를 BFS로 모두 검사하게 되면 제한시간 안에 풀지 못하는 것이 일반적이기 때문에, DFS를 활용하여 루트 노드에서 가장 낮은 레벨의 노드로 도달하는 방법을 찾아야 합니다.
문제링크: https://www.acmicpc.net/problem/2239
공부좀하자님이 만족하시는 답변이 되었기를 바라며, 답변 해결로 상태 변경을 부탁드립니다.
이후에도 문제를 풀거나 공부하시면서 어려운 점이 있다면 질문 올려주세요.
감사합니다.
정처기 필기 준비할때 이 이론을 다시 외워도 될까요?
0
48
2
최댓값 구하기(서바이벌)에서 수식 구성에 대한 질문
0
38
2
Trace32 function 함수 조회 Makefile 수정 부분
0
30
1
조건 반복문 질문: for 문 ?
0
60
1
정처기 26-2회. 9번 질문드립니다!
0
78
1
이론 보면서 질문이 있습니다.
0
71
2
동전문제 풀이 질문
0
111
2
장기문제 최종 cpp파일
0
169
2
이해가 안되는 부분이 있습니다.
0
348
1
f20 에서 f15 + 1은 이해가 됩니다...
0
381
1
배낭문제가 백준문제로 있어서 작성했는데 왜 안되는지 알 수 있을까요?
0
524
1
혹시 이건 왜 안되는지 말씀해주실 수 있나요??
1
567
2
코딩테스트 공부법에 대한 질문
0
649
1
입력함수 출력함수 관련
0
435
1
강의자료
0
1212
1
동전구현문제
0
376
1
아파트 단지 문제
0
340
2
수업하신 PPT 자료는 다운 못하나요?
0
376
1
C언어로 푼 코드는 없나요?
0
349
1
안녕하세요! 왜 +1 을 하는 지 모르겠습니다
0
239
1
DFS함수 동작 원리 강의 14분 33초 호출 스택 관련 질문
0
234
1
코드를 무조건 짧게하는게 좋은건가요?
1
406
1
이해한게 맞는지 잘 모르겠습니다
1
284
1
모범 답안
0
395
1

