DataStructure(4)
-
[Data Structure] Graph
1. Graph란? Graph란 데이터 간의 복잡한 관계도를 표현할 수 있는 Data Structure다. 예를 들어, 내 친구 4명 A, B, C, D가 있다. 나는 친구들을 모두 알지만, 친구들끼리는 서로 모른다고 가정하자. 이러한 관계를 명확하게 표현할 때 이용할 수 있다. 또 다른 예시로는 , 비행기 루트를 들 수 있다. 한국에서 일본을 간다고 가정하자. 이때 갈 수 있는 경로는 매우 많다. 예를들어, 제주도를 경유해서 가도 되고, 파리를 경유해서 가도 된다. (물론 예시일 뿐이니 가볍게 생각해 주기 바란다.) 이럴 때, 관계를 나타내보면 다음과 같이 나타낼 수 있다. "한국 ---> 제주도 ---> 일본 or 한국 ---> 파리 ---> 일본 or 한국 ---> 제주도 ---> 파리 ---> 일..
2024.03.23 -
[Data Structure] Binary Tree
1. Binary Tree란? 위 사진은 Binary Tree의 구조를 나타내는 사진이다. 앞서 설명한 General Tree와 다른 점이 보이는가? 그건 바로 child가 최대 2명이라는 거다. 그럼 여기서 의문이 든다. child를 여러 명으로 생성하는 General Tree를 쓰지 왜 child가 두 명으로 제한되는 Binary Tree를 쓰는 것인가? 그것은 바로 데이터를 찾을 때 유용하기 때문이다. 예를들어, 리스트에 들어있는 숫자 중에서 내가 원하는 숫자를 찾는다고 가정하자. 이럴 경우, 처음부터 찾아가기 시작하여 시간복잡도가 크다. 만약 이 시간 복잡도를 줄이기 위해서는 어떻게 해야 할까? 그건 바로 규칙을 정해 수를 나누는 거다. 이 과정에서 Binary Tree를 쓰면 시간복잡도가 O(l..
2024.03.23 -
[Data Structure] General Tree
1. General Tree란? General Tree란 일반적인 Tree 구조를 말한다. Tree의 기본단위는 기본적으로 부모와 자식으로 구성되어 있다. 이러한 pattern이 여러번 반복되어있는 구조가 Tree를 이루게 된다. 아래 그림을 보고 이해 해보자. 여기서 동그라미로 표현 되어 있는 부분을 Node라고 한다. Node에는 parent 와 child의 개념이 중요하다. 실제 단어의 뜻과 똑같게 해석하면 된다. Q라는 노드가 있다. Q의 자식 노드는 무엇인가? 바로 C, N , R 이다. 그렇다면 C의 부모노드는 무엇인가? 바로 Q노드이다. General Tree는 자식이 몇명있던지 상관이 없다. Q처럼 자식이 3명이 있어도 된다. 또한 F처럼 자식이 2명이 있어도 된다. 이러한 점이 Binar..
2024.03.23 -
Queue를 이용한 간단한 구현에서 발견한 나의 문제점
#%% from collections import deque class Queue: def __init__(self): self.buffer = deque() def enqueue(self,val): self.buffer.appendleft(val) def front(self): return self.buffer[-1] def dequeue(self): if len(self.buffer) == 0: print("Queue is empty.") return return self.buffer.pop() def is_empty(self): return len(self.buffer) == 0 def size(self): return len(self.buffer) #%% def print_binary(n): qu..
2024.03.11