codintest(2)
-
Python 79 - 이진탐색 (2)
이진 탐색 트리 트리 자료구조 중에서 가장 간단한 형태가 이진 탐색 트리이다. 이진 탐색 트리란 이진 탐색이 동작할 수 있도록 고안된, 효율적인 탐색이 가능한 자료구조이다. 이진 탐색 트리를 설명하는 동안 코드를 배제할 테니 편하게 다음그림을 보자. 보통 이진 탐색 트리는 이 그림과 같은데 모든 트리가 다 이진 탐색 트리는 아니며, 이진 탐색 트리는 다음과 같은 특징을 가진다. 부모 노드 보다 왼쪽 자식이 노드가 작다. 부모 노드보다 오른쪽 자식이 노드가 크다. 그림에서 루트를 포함한 일부만 다시 살펴보자. 좀 더 간단하게 표현하면 왼쪽 자식 노드 < 부모노드 < 오른쪽 자식 노드가 성립해야지 이진 탐색 트리라 할 수 있다. 그림에도 17 < 30 < 48 로 성립한다는 걸 알 수 있다. 이진 탐색 트리..
2021.07.14 -
Python 65 - DFS/BFS (4) DFS
DFS는 Depth-First Search. 깊이 우선 탐색이라고도 부르며, 그래프에서 깊은 부분을 우선적으로 탐색하는 알고리즘이다. DFS를 설명하기 전에 먼저 그래프(Graph)의 기본 구조를 알아야 한다. 그래프는 노드(Node)와 간선(Edge)으로 표현되며 이떄 노드를 정점(Vertex)이라고도 말한다. 그래프 탐색이란 하나의 노드를 시작으로 다수의 노드를 방문하는 것을 말한다. 또한 두 노드가 간선으로 연결되어 있다면 '두 노드는 인접하다(Adjacent)' 라고 표현한다. 여기에서 갑자기 노드와 간선이라는 생소한 단어가 나와서 헷갈릴 수도 있는데, 일반적으로 그래프를 표현할 때 사용하는 단어들이다. 노드를 도시, 간선을 도로라고 생각해보자. A라는 도시(노드)에서 B라는 도시(노드)로 이동하..
2021.06.26