[KR] 자료구조 & 알고리즘 : 트리(Tree)

1. 트리의 개념 1.1. 트리의 정의 노드와 브랜치를 활용하여 구성한 데이터 구조 1.2. 트리와 관련된 용어 트리 관련 용어 노드(Node) 데이터를 저장하는 기본 요소 다른 노드와 연결되는 브랜치에 대한 정보도 포함 브랜치(Branch) 상위 노드와 하위 노드를 연결하는 가지 루트노드(Root Node) 트리 최상단에 위치한 최상위 노드 레벨(Level) 최상위 노드를 Level 0이라고 할 때, 특정 레벨에 위치한 노드의 집합 부모 노드(Parent Node) 상위 노드 자식 노드(Child Node) 하위 노드 단말 노드(Leaf Node) 하위 노드가 없는 노드 형제 노드(Sibling Node) 동일한 부모 노드를 가진 노드 깊이(Depth) 루트에서 어떤 노드에 도달하기 위해 거쳐야 하는 간선의 수 크기(Size) 자신을 포함한 모든 자식노드의 개수 높이(Height) 하위 트리 개수 / 간선 수 (degree) = 각 노드가 지닌 가지의 수 노드의 차수(Degree of Node) 각 노드가 지닌 가지의 수 트리의 차수(Degree of Tree) 트리의 최대 차수 트리의 종류 이진 트리 vs 이진 탐색 트리 이진 트리(Binary Tree) 노드의 최대 브랜치가 2개인 트리 이진 탐색 트리(Binary Search Tree: BST) 왼쪽 노드는 해당 노드보다 작은 값, 오른쪽 노드는 해당 노드보다 큰 값을 가지는 조건이 적용된 이진트리 1....

March 1, 2021 · 8 min · Wonyoung Seo

[KR] 자료구조 & 알고리즘 : 해시 테이블(Hash Table)

애매모호하게만 알고 있는 자료구조를 다시 공부하고 정리하는 포스트입니다. 잘 못 이해하고 있는 부분이 있다면 주저없이 지적 부탁 드립니다 :) 1. 해쉬 테이블 (Hash Table) 1.1. 해쉬 테이블의 구조 키(Key)에 데이터(Value)가 매핑되어 저장되어 있는 구조 Key를 통해 데이터를 바로 받아올 수 있으므로, 속도가 빠름 파이썬에서는 딕셔너리(Dictionary)가 해쉬 테이블의 예시. dict = {"key": "value"} 1.2. 해쉬 테이블의 용어 해쉬(Hash) 임의의 값을 고정된 길이로 변환하는 것 해쉬 테이블(Hash Table) Key값의 연산에 의해 직접 접근이 가능한 데이터 구조 해싱 함수(Hashing Function) Key에 대해 특정 산술 연산을 이용하여 데이터의 위치(해쉬 주소)가 리턴되는 함수 해쉬 값(Hash Value) 또는 해쉬 주소(Hash Address) Key를 해싱 함수로 연산하여 얻는 값 Key를 해싱 함수로 연산하여 해쉬 값이 데이터의 위치....

February 19, 2021 · 6 min · Wonyoung Seo

[KR] 자료구조 & 알고리즘 : 링크드 리스트(Linked List)

애매모호하게만 알고 있는 자료구조를 다시 공부하고 정리하는 포스트입니다. 잘 못 이해하고 있는 부분이 있다면 주저없이 지적 부탁 드립니다 :) 1. 링크드 리스트 : Linked List 의 개념 1.1. 링크드 리스트의 구조 데이터와 데이터 사이를 화살표로 연결하여 관리하는 데이터 구조. 배열(Array)와의 차이점 1.2. 링크드 리스트와 배열(Array)와 차이점 배열 : 번호가 붙여진(인덱싱이 된) 칸에 원소들을 채워 넣어 관리함. 링크드 리스트: 각 원소들을 줄줄이 엮어서 관리함. 1.2.1. 배열과 링크드 리스트의 비유적 비교 (출처: 생활코딩) 메모리라는 개념을 우리는 건물에 비유할 수 있을 것 같습니다....

February 1, 2021 · 13 min · Wonyoung Seo

[KR] 자료구조 & 알고리즘 : 배열(array), 큐(queue), 스택(stack)

애매모호하게만 알고 있는 자료구조를 다시 공부하고 정리하는 포스트입니다. 잘 못 이해하고 있는 부분이 있다면 주저없이 지적 부탁 드립니다 :) 0. 자료구조? 알고리즘? 자료구조 Data Structure 대량의 데이터를 효율적으로 관리할 수 있는 데이터의 구조   체계적인 데이터 구조화의 필요성 코드 상에서 효율적인 데이터 처리하기 위함 어떤 데이터 구조를 사용하느냐에 따라 효율이 달라짐.   알고리즘이란 어떠한 문제를 풀기 위한 절차 / 방법 특정 문제에 해당하는 특정 입력을 넣으면 특정 출력을 얻을 수 있도록 하는 프로그래밍  ...

January 27, 2021 · 5 min · Wonyoung Seo