DFS하다가 길 잃음
세션 소개
자료구조의 선택과 탐색 순서가 알고리즘의 결과와 성능을 어떻게 바꾸는지 익히는 4주 세션입니다. 시간 복잡도와 선형 자료구조를 먼저 다룬 뒤 재귀, 깊이 우선 탐색, 너비 우선 탐색을 작은 문제에 적용합니다.
문제 수를 늘리는 것보다 입력, 자료구조, 방문 순서, 복잡도를 말로 설명하고 코드로 검증하는 데 초점을 둡니다.
이런 분께 추천합니다
- Python, Java, C++ 중 한 언어의 조건문, 반복문, 함수를 사용할 수 있는 분
- 자료구조를 언제 선택해야 하는지 기준을 만들고 싶은 분
- 재귀 호출과 방문 배열의 동작을 그림으로 이해하고 싶은 분
- DFS와 BFS를 코딩 테스트 문제에 적용하고 싶은 분
커리큘럼
| 주차 | 주제 | 내용 |
|---|---|---|
| 1주차 | 복잡도와 선형 자료구조 | 입력 크기에 따른 시간·공간 복잡도를 비교합니다. 배열과 연결 구조의 접근·삽입 차이를 확인하고 작은 연산의 비용을 표로 정리합니다. |
| 2주차 | 스택과 큐 | LIFO와 FIFO 동작을 직접 구현하고 괄호 검사와 작업 대기열 문제에 적용합니다. 사용하는 언어의 표준 자료구조와 연산별 복잡도를 확인합니다. |
| 3주차 | 재귀와 DFS | 호출 스택과 종료 조건을 그림으로 추적합니다. 인접 리스트와 방문 배열을 사용해 연결 요소와 미로 탐색 문제를 DFS로 해결합니다. |
| 4주차 | BFS와 최단 거리 | 큐에 정점을 넣고 꺼내는 순서를 단계별로 기록합니다. 가중치가 없는 그래프의 최단 거리 문제를 풀고 같은 입력에서 DFS와 탐색 순서를 비교합니다. |
진행 방식
- 매주 핵심 자료구조를 손으로 추적한 뒤 2개의 작은 문제에 적용합니다.
- 세션에서는 정답 코드보다 입력 크기와 복잡도 설명을 먼저 검토합니다.
- 풀이 코드는 같은 Git 저장소에 기록하고 실패한 접근도 짧게 남깁니다.
- 마지막 주에는 같은 그래프를 DFS와 BFS로 탐색하며 차이를 설명합니다.
준비 사항
- 노트북, Git·GitHub 계정
- Python, Java, C++ 중 사용할 언어 하나의 개발 환경
- 조건문, 반복문, 함수와 배열 사용 경험