아카이브 목록

DFS하다가 길 잃음

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++ 중 사용할 언어 하나의 개발 환경
  • 조건문, 반복문, 함수와 배열 사용 경험

참고 자료