inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

IT 기업 취업을 위한: 코딩테스트 혼자서 정복하기 (C/C++)

DFS

해결된 질문

412

wlfansdl

작성한 질문수 32

0

아파트 단지 번호 문제는 BFS로 풀어도 되지 않나요?
DFS로 푸신 이유가 있을까요 ?

그리고 BFS는 대충 최단거리 구할때 쓰면 될거 같은데 ( 맞나요 ? )
꼭 DFS를 써야되는 순간은 어떤 순간일지 잘 모르겠습니다..

c 코테 준비 같이 해요!

답변 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

공부좀하자님이 만족하시는 답변이 되었기를 바라며, 답변 해결로 상태 변경을 부탁드립니다.

이후에도 문제를 풀거나 공부하시면서 어려운 점이 있다면 질문 올려주세요.

감사합니다.

20년 4,5회 13번

0

31

2

안녕하세요. 계속 프로젝트를 해야지 하다가 결제하고 환경 설정 중입니다.

0

23

1

Export template 안됨

1

49

2

scanf("%d\n") 의미

0

31

1

필기자료 사라졌나요?(실기 일주일만에 안돼서 재도전-_-)

0

67

2

26년 1회 실기 해설 강의

0

80

2

동전문제 풀이 질문

0

65

2

장기문제 최종 cpp파일

0

128

2

이해가 안되는 부분이 있습니다.

0

325

1

f20 에서 f15 + 1은 이해가 됩니다...

0

354

1

배낭문제가 백준문제로 있어서 작성했는데 왜 안되는지 알 수 있을까요?

0

497

1

혹시 이건 왜 안되는지 말씀해주실 수 있나요??

1

526

2

코딩테스트 공부법에 대한 질문

0

618

1

입력함수 출력함수 관련

0

402

1

강의자료

0

1183

1

동전구현문제

0

354

1

아파트 단지 문제

0

305

2

수업하신 PPT 자료는 다운 못하나요?

0

348

1

C언어로 푼 코드는 없나요?

0

323

1

안녕하세요! 왜 +1 을 하는 지 모르겠습니다

0

209

1

DFS함수 동작 원리 강의 14분 33초 호출 스택 관련 질문

0

216

1

코드를 무조건 짧게하는게 좋은건가요?

1

382

1

이해한게 맞는지 잘 모르겠습니다

1

260

1

모범 답안

0

370

1