inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[자바/Java] 문과생도 이해하는 DFS 알고리즘! - 입문편

DFS와 BFS (백준 1260)

(백준 1260) 큐 사용에 대해서 질문드립니다!

해결된 질문

338

정재우

작성한 질문수 2

2

선생님 덕분에 회차를 거듭할수록 재귀에 대한 이해도가 높아지고 있습니다 감사합니다!

기존에 계속 독학으로 하다보니 제가 아는 내용과 조금 다른 부분이 있어 오늘만 벌써 두번째 질문이네요 ㅜㅜ

기존에 큐를 구현할때

Queue<Integer> q = new LinkedList<>();

혹은

PriorityQueue<Integer>pq = new PriorityQueue<>();

로 구현해서 사용했었습니다!

근데 혹시 ArrayList로 구현하시는 이유가 있을까요??

 

하나 더 여쭤보자면...

dfs는 재귀함수를 호출하는게 필수인데 비해

bfs는 재귀호출이 없는데

그럼 bfs는 재귀가 아닌 queue를 무조건적으로 사용한다고 생각하면 될까요?

 

매번 훌륭한 강의 감사드립니다!!

java 코딩-테스트 알고리즘 dfs

답변 1

2

개발자로 취직하기

이번에도 너무 좋은 질문이네요! 저도 강의나 설명을 들을 때 질문을 많이 하는 편인데, 질문하는 만큼 더 집중하게 되고 이해가 잘되는 것 같아서 조금이라도 궁금한 부분은 꼭 질문 남겨주세요!

  1. Queue를 왜 ArrayList로 정의했는가
    우선 말씀하신 LinkedList나 Priority Queue를 사용해도 동일하게 문제를 풀 수 있어서 어떤 방식을 사용해도 무방합니다. 다만 제가 ArrayList를 사용한 건, 최대한 외워야 할 기본 라이브러리/클래스의 수를 줄이기 위해서에요. 결국 BFS를 하면서 필요한 건 맨 뒤에 요소를 추가하고 맨 앞의 요소를 꺼내오는 동작, 이 2가지이기 때문에 이 동작을 제공하는 자료구조라면 뭐든 사용이 가능합니다. 그런데 Queue나 PriorityQueue를 사용하려고 하다보면, 어떤 자료구조는 add/remove 함수를 써야 하고, 또 누구는 poll/peek를 써야 해서 어느 자료구조 하나도 제대로 사용하지 못하는 경우가 자주 발생하는 것 같아요. 그래서 제 강의나 코딩 테스트 문제를 풀 때 되도록 ArrayList와 같이 가장 기본적이고 보편적으로 많이 사용되는 자료 구조로 통일하려고 합니다!

  2. DFS == 재귀 && BFS == Queue?
    말씀하신 대로 DFS는 재귀함수, BFS는 Queue로 구현하는 것이 가장 일반적이라 BFS 유형에서는 queue를 사용한다고 생각하시면 됩니다! BFS 강의도 최대한 빨리 준비해서 깔끔하게 정리해볼게요 :)

2

정재우

늦은 시간에도 확인해주시고 답변 달아주셔서 정말 감사합니다!
도움이 많이 됐습니다!

dfs 부문을 이렇게 작성해도 되나요?

1

74

1

x랑 y를 거꾸로 쓰는 개념이 너무 헷갈립니다...

1

97

2

dfs 파라미터에 count를 넣는이유

1

65

2

graph 채울때 for문 설계 질문

1

73

2

질문있습니다.

1

75

1

다른 강의 언제나오나용?

1

94

2

노드간 거리 계산

1

146

1

안녕하세요, 혹시 다른문제도 여쭤볼 수 있을까요?

1

131

1

최근에 올린 질문, 코드블럭으로 공유드립니다!

1

143

1

질문이 있습니다. dfs 메서드에 order를 이렇게 구현하면 안되는 이유가 무엇인가요?

0

135

2

깊이우선탐색2 백준 24480 수업노트에...

1

120

1

백준 24479 문제 제출 결과 "틀렸습니다" 라고만 나와서 어떤 부분이 틀렸는지 잘 모르겠어요 피드백 부탁드립니다

1

251

3

graph 만들때 boolean[][] 으로 만드는 경우랑 int[][] 나 ArrayList<Integer>[] 로 만드는 기준이 어떻게 되나요?

1

202

2

graph를 2차원 배열 또는 List로 하는 기준을 어떤식으로 잡으면 좋을까요...?

1

224

1

강사님 안녕하세요! 깊이 우선 탐색 2 (백준 24480)에서 제공하는 풀이 코드에서 궁금한 점이 있어서 질문 드립니다!

1

328

3

촌수 계산

1

355

3

연결 요소의 개수 (백준 11724)

1

268

1

백준 24479 문제 시간 초과 질문 드려요

1

384

1

백준 실행시 틀립니다.

1

374

1

재귀대신 스택으로 구현하면 안될까요?

1

410

1

dfs 매개변수에서 y,x 를 왜 순서를 반대로 쓰셨는지 궁금합니다.

1

373

1

안녕하세요 11724번 질문드려요!

2

316

1

출력할 때 BufferedWriter? StringBuilder?

1

513

1

answer++ 위치 질문

1

257

1