Archive
-
[자료구조] Tree - AVL TreeArchive/CS & App 2021. 5. 6. 19:29
자료구조 05 - 4 / Tree - AVL Tree / 정의 AVL 트리(발명자 Adelson-Velsky and Landis), 이진탐색 트리 구조로 스스로 균형을 잡는 데이터 구조중 최초 발명 두 자식 SubTree의 Height는 항상 1 만큼 차이를 유지, 1보다 큰 경우 스스로 균형을 잡음(Rotation) balance factor = abs( height(left subtree) - height(right subtree) ) A의 서브트리의 높이의 차가 1 보다 커지는 경우 Rotation을 진행 원리 Rotation 이해하기 Single Rotation (raywenderlich.com) 불균형이 발생하면 root의 SubTree 중 높이가 높은 SubTree의 최상단 노드를 Pivot ..
-
[자료구조] Tree - Binary Search TreeArchive/CS & App 2021. 5. 6. 00:17
자료구조 05 - 3 / Tree - BinarySearchTree (BST) 정의 이진트리의 종류 중 하나로 Ordered or Sorted Binary Tree로 불림 이진트리로 Subtree가 추가 될때 조건을 가짐, 예를 들어 Current Node 보다 작으면 Left, 크면 Right Child로 추가됨 저장 규칙 (조건)이 좀 더 효율적인 트리로 만들어줌 일반적인 이진트리보다 빠른 탐색 속도를 가진다. 추가 Inserting 추가될 노드의 부모노드가 될때까지의 높이(h)를 거치며 조건에 맞게 자리 잡으므로 O(h) time 소요 탐색 Searching 마찬가지로 추가될 노드의 값을 조건을 확인하며 찾아가므로O(h) time 소요 순회 Traversing In-Order : left -> ro..
-
[자료구조] Tree - Binary TreeArchive/CS & App 2021. 5. 3. 23:53
자료구조 05 - 2 / Tree - BinaryTree 정의 트리 구조에서 2개의 서브트리만 가지는 트리의 형태, 모든 노드의 자식노드는 두개의 서브트리만 가짐 이진트리의 Leaf Node의 상태에 따라서 * (N = level) Perfect Binary Tree (포화 이진 트리) : 모든 레벨에 노드가 채워진 트리 (총 Node 갯수 : 2ᴺ + 1 개 / Leaf의 갯수: 2ᴺ 개) Complete Binary Tree (완전 이진 트리) : 자식노드가 왼쪽 -> 오른쪽 형태로 채워진 트리 Full Binary Tree (정 이진 트리) : 자식노드가 없거나 2개인 노드로 채워진 트리 로 구분지어 표현 할수 있다. 구현 class BinaryTreeNode: Node { var leftChild..
-
[자료구조] Tree - 기초개념Archive/CS & App 2021. 4. 30. 17:16
자료구조 05 - 1 / Tree 정의 그래프의 일종으로 최상위 노드 Root Node를 시작으로 노드를 이어가는 자료구조 비순환, 비선형 자료구조로, 계층적관계 (Hierarchical Relationship)를 표현한다. 트리를 구성하고 있는 구성요소 Edge : 트리를 구성하기 위해 노드와 노드를 연결하는 선 Internal Node : 단말 노드를 제외한 모든 노드로 루트 노드 포함 Parent Node : 현재 노드의 상위 레벨에 이어진 상위 노드 Child Node : 현재 노드의 하위레벨에 이어진 하위 노드 github GitHub - keeplo/SwiftTools: 자료구조 알고리즘 등 직/간접적으로 사용가능한 예제 자료구조 알고리즘 등 직/간접적으로 사용가능한 예제. Contribute..
-
[TroubleShooting] API KEY 인코딩 문제 (SERVICE KEY IS NOT REGISTERED ERROR )Archive/Log 2021. 3. 8. 22:01
어쩌면?! ㅎ 처음으로 공공데이터를 사용 하게 되었다.. www.data.go.kr 공공데이터 포털 국가에서 보유하고 있는 다양한 데이터를『공공데이터의 제공 및 이용 활성화에 관한 법률(제11956호)』에 따라 개방하여 국민들이 보다 쉽고 용이하게 공유•활용할 수 있도록 공공데이터(Datase www.data.go.kr 다행히도 공공데이터 포털이다 보니 많은 분들의 시도와 노고로 인해 얻을 수 있는 정보가 많았다. 내가 직면 한문제는 .. 분명 포스트 맨으로 정상 동작하는 API 쿼리가 코드에서 돌리면 자꾸 SERVICE KEY IS NOT REGISTERED ERROR 가 발생하는 문제가 있었다. 위 처럼 String으로 입력한 Key 값이 변형된걸 볼수 있다. let config = URLSessio..
-
[자료구조] Hash TableArchive/CS & App 2021. 2. 11. 21:54
자료구조 04 / Hash Table 정의 해쉬 테이블 키(Key) 값을 주어질때 Hash Function을 거처 하나의 같은 길이(크기)의 데이터(Value)를 저장하는 데이터 구조 용어정리 Hash : 임의 값을 고정 길이로 변환하는것 Hashing Function : Key에 대해 산술 연산을 이용해 데이터 위치를 찾을 수 있는 함수 Hash Value (Hash Address) : Key를 해싱 함수로 연산해 해쉬 값을 알아내 해쉬 테이블에서 해당 Key에 대한 데이터 위치 Slot : 한 개의 데이터를 저장할 수 있는 공간 * 저장할 데이터에 대해 Key를 추출 할 수 있는 별도 함수도 존재 할 수있음 일반적인 예 (Swift) : Dictionary Dictionary 사용법 간단한 정리 - ..
-
[자료구조] Linked ListArchive/CS & App 2021. 2. 11. 19:07
자료구조 03 / Linked List 정의 연결 리스트는 배열과 달리 떨어진 곳에 존재하는 데이터를 각 주소끼리 연결하는 데이터 구조 (배열 : 순차적으로 연결된 공간에 데이터를 나열 하는 데이터 구조) 파이썬, 스위프트 등의 최근 고급 언어에서는 배열 자체도 동적으로 할당받을 수 있어서 (연결 리스트 형태와 유사하게 동작하기도 한다) Linked List는 노드 (Node)의 묶음으로 볼 수 있는데 Node는 값을 갖는 Data와 다음 노드를 가리키는 포인터(Pointer)를 포함함 Node를 Class로 구현하는 경우 클래스의 객체를 = 할당하는 건 참조(포인터 연결)와 같은 기능을 하기 때문에 C/C++ 언어와 달리 Swift는 따로 포인터 없이 객체를 바로 할당한다. github GitHub -..