inflearn logo
강의

Khóa học

Chia sẻ kiến thức

Đối với việc làm ở công ty CNTT: Tự mình chinh phục bài kiểm tra viết mã (C/C++)

DFS

Đã giải quyết

410

wlfansdl

32 câu hỏi đã được viết

0

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

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

c 코테 준비 같이 해요!

Câu trả lời 1

0

yongbaks

안녕하세요 공부좀하자님.

먼저, 아파트 단지 번호 문제는 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

15

1

Export template 안됨

1

28

2

scanf("%d\n") 의미

0

20

1

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

0

37

2

26년 1회 실기 해설 강의

0

51

2

주소 연산자(&) 간접 지정자(*) 반대 개념

0

33

1

동전문제 풀이 질문

0

57

2

장기문제 최종 cpp파일

0

122

2

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

0

321

1

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

0

347

1

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

0

493

1

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

1

518

2

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

0

612

1

입력함수 출력함수 관련

0

399

1

강의자료

0

1181

1

동전구현문제

0

350

1

아파트 단지 문제

0

297

2

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

0

342

1

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

0

317

1

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

0

206

1

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

0

212

1

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

1

378

1

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

1

256

1

모범 답안

0

365

1