본문 바로가기

전체 글11

[Android] Room을 이용하여 로컬 데이터베이스 저장하기 🧐 Room? 로컬 데이터베이스를 이용하는 방법 중 하나는 안드로이드에서 기본적으로 제공하는 데이터베이스인 SQLite가 있다. 하지만 구글에서 2017년 AAC(Android Architecture Components)를 내놓음으로 SQLite를 직접 사용하여 구현하는 것보다 Room을 사용할 것을 권장했다. 권장 사유는 아래 안드로이드 SQLite 공식 문서 Caution 내용을 참고할 수 있었다. SQL Query를 직접 작성했어야 했고, 이를 컴파일 시점에서 유효성 검증이 불가하다는 점 Database Scheme이 변경될 때 일일이 Query를 업데이트해야한다는 점 데이터를 객체로 변환할 때 많은 boilerplate code를 작성해야한다는 점 Room은 SQLite의 추상 레이어를 제공하여 .. 2021. 6. 10.
[자료구조] Tree에 대하여(2) - 이진 검색 트리와 AVL 트리 1. BST (Binary Search Tree) : 이진 검색 트리 Binary Tree에서는 검색 연산의 worst case가 O(n)의 복잡도를 가졌다. 하나의 노드를 찾는 데에는 모든 노드를 탐색했어야 하기 때문이다. BST(Binary Search Tree)에서는 제약을 둔다. 노드의 왼쪽 서브트리에는 해당 노드보다 작은 값, 오른쪽에는 큰 값. 위 제약을 통하여 검색 연산에 대한 시간 복잡도를 O(log n)으로 줄일 수 있다. 더보기 사실 위 제약만으로는 검색 연산에서의 worst case가 O(n)으로 동일하다. (skew tree의 경우) 이는 BST를 밸런싱 작업을 통해 해결할 수 있으며 잠시 후 배우게 될 것이다. 1-1. 특징 1. 노드의 왼쪽 서브 트리는 노드의 키 값보다 작은 키.. 2021. 5. 31.
[Kotlin/자료구조] Tree에 대하여(1) 1. 들어가기 전에 : 선형 구조 vs 비선형 구조 이전 포스팅에서 설명한 LinkedList(연결 리스트), Queue(큐), Stack(스택)은 선형(Linear) 자료구조라고 한다. 선형 자료구조는 데이터가 연속적으로, 순차적으로 나열된 형태를 뜻한다. 배열과 리스트가 대표적이다. 하나의 선에 데이터의 앞(front). 뒤(rear)가 존재한다고 생각하면 쉽다. 선형 구조 외에 분류로 비선형(NonLinear) 자료구조가 있다. 비선형 자료구조는 데이터의 관계들이 계층적으로 연관된, 또는 1:n / n:m 관계를 갖는 자료구조이다. 트리와 그래프가 대표적이다. 하나의 데이터 뒤에 여러개의 데이터가 존재한다고 생각하면 쉽다. 그래프에 대해서는 다음 포스팅에서 다루도록 하겠다. 사실 트리도 그래프의 한.. 2021. 5. 9.
[LeetCode] 18. 4Sum (Kotlin) 1. 문제 소개 4Sum - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com Given an array nums of n integers, return an array of all the unique quadruplets [nums[a], nums[b], nums[c], nums[d]] such that: 0 2021. 4. 29.