[이코테] 탐색 알고리즘 DFS/BFS
·
코테
DFS depth-first Search의 약자. 깊이 우선 탐색이라고도 부르며, 그래프에서 깊은 부분을 우선적으로 탐색하는 알고리즘. 먼저 그래프의 기본 구조를 알아야 하는데, 그래프는 노드와 간선으로 표현되며 이때 노드를 정점이라고도 함. 그래프 탐색이란? 하나의 노드를 시작으로 다수의 노드를 방문하는 것. 두 노드가 간선으로 연결되어 있다면 '두 노드는 인접하다' 라고 표현 프로그래밍에서 그래프는 크게 2가지 방식으로 표현할 수 있음. 인접 행렬 인접 리스트 인접 행렬 2차원 배열에 각 노드가 연결된 형태를 기록하는 방식. 연결된 그래프를 인접 행렬로 표현할 때 파이썬에서는 2차원 리스트로 구현. 연결이 되지 않은 노드끼리는 무한의 비용이라고 작성함. 실제 코드에선 정답이 될 수 없는 큰 값 중에서..
[이코테] 꼭 필요한 자료구조 기초
·
코테
탐색 탐색이란 ? 많은 양의 데이터 중에서 원하는 데이터를 찾는 과정. 프로그래밍에서는 그래프, 트리 등의 자료구조 안에서 탐색을 하는 문제를 자주 다룸. 대표적으로 DFS, BFS가 있음. 사전 지식: 스택, 큐, 재귀함수 자료구조 데이터를 표현하고 관리하고 처리하기 위한 구조. 다음의 두 핵심 함수로 구성 삽입(Push): 데이터를 삽입 삭제(Pop) : 데이터를 삭제 오버플로 : 데이터가 이미 가득찬 상태에서 삽입 시 발생 언더플로 : 데이터가 없는 상태에서 삭제 시 발생 스택 박스 쌓기에 비유할 수 있음. (아래 -> 위로 쌓음) 아래에 있는 박스를 치우기 위해선 위에 있는 박스 먼저 내려야 함. = 후입선출 큐 대기 줄에 비유할 수 있음. (먼저 온 사람이 먼저 들어감) = 선입선출 재귀 함수 ..