전체 글 151

[자료구조] 🚀 이진트리(Binary Tree)

2022.07.25 - [🧐 알고리즘] - [자료구조] 트리(Tree) [자료구조] 트리(Tree) 트리(Tree) 🌲 노드,간선으로 이루어진 비선형 자료 구조 💡 트리의 특징 • 부모노드, 자식노드와 같이 계층구조로 표현되는 비선형 자료구조 • 탐색에 주로 사용 • 루트노드를 제외한 모든 kong-droid.com 트리 자료구조에 이어 이진트리에 대해 알아보겠습니다 🚀 이진트리 (Binary Tree) 영어에서 유추해볼 수 있듯이 이진트리는 💡 모든 노드가 자식 노드를 최대 2개를 가질 수 있는 트리 특징 • n개의 노드는 n-1의 간선을 가짐 • 자식노드는 공백이 될 수도 있음 • 레벨(a)에서 가질 수 있는 최대 노드의 갯수는 2ª 종류 📌 전 이진 트리 (Full Binary Tree) - 각 레..

🧐 알고리즘 2022.07.26

[자료구조] 트리(Tree)

트리(Tree) 🌲 노드, 간선으로 이루어진 비선형 자료 구조 📎 트리의 용어 1. 노드(node): 트리를 구성하는 기본 원소 루트 노드 : 트리의 최상위 노드 자식 노드 : 어떤 노드 바로 밑에 연결된 노드 부모 노드 : 어떤 노드 바로 위에 연결된 노드 형제 노드 : 같은 부모 노드를 갖는 노드 리프 노드 : 루트 노드를 제외하고 자식이 없는 노드 (가장 마지막 노드들) 2. 높이 : 루트 노드에서부터 가장 깊은 노드까지의 길이 (루트노드에서부터 1로 시작) 3. 깊이(depth): 루트노드에서 어떤 노드까지 거쳐야 하는 간선의 수 4. 레벨 : 트리의 특정 깊이를 가지는 노드의 집합, 루트노드(level = 0) 5. 차수(degree) : 각 노드 별 자식 노드의 개수 6. 트리의 차수 : 트리..

🧐 알고리즘 2022.07.25

[디자인 패턴] Observer Pattern(관찰자 패턴)

Observer Pattern Observer Pattern은 쉽게 말하자면, 관찰자가 데이터를 관찰하다가 변경사항이 생기면 업데이트 되는 방식입니다 📌 Observer Pattern의 구성 발행자 (Subject) • 객체의 변화를 발생시키는 역할 관찰자 (observer) • 객체의 상태변화를 관찰하는 역할 • 상태가 변화되면 실행할 부분들을 구현합니다 • 발행자를 연결하고 나서부터 관찰이 가능하기 때문에, 발행자와 연결하는 과정인 '구독(Subscriber)'이 필요합니다 Observer의 구현 • 변화가 발생하면 각 옵저버(ConcreteObserverA, B)는 콜백(notify())을 받습니다 • 각 Observer는 notify함수를 구현해 이벤트 발생 시 처리할 동작을 정의합니다 • Sub..

[자료구조] 스택 , 큐 , 덱

각 자료구조들의 이론과 사용되는 함수에 대해 다뤄보고자 합니다 📌 스택 쉽게 말해 쌓이는 자료 구조로 , LIFO(Last In First Out)을 따릅니다 즉 가장 마지막에 넣는 아이템이 가장 먼저 빼지는 형태입니다 🛠 스택의 함수 • push(아이템) : 아이템을 스택에 삽입 var stack = Stack() stack.push("A") stack.push("B") stack.push("C") • pop(): 스택 가장 위에 있는 아이템을 제거 stack.pop() stack.pop() • peek(): 스택의 가장 위에 있는 아이템을 반환 stack.peek() //return "A" • size: 스택의 사이즈를 반환 • add(idx, item) : idx에 item 삽입 stack.add(..

🧐 알고리즘 2022.07.17

[Kotlin] apply, let, with, also, run 비교 (Scope Function)

안녕하세요 :) 오늘은 코틀린의 다섯 가지 함수를 비교해보고자 합니다. [2022.07.14 업데이트] SCOPE 함수란? 객체의 컨텍스트 내에서 코드 블록을 실행하는 것이 유일한 목적인 함수입니다. 람다식으로 SCOPE 함수를 호출할 때 임시적으로 범위를 생성하고, 해당 범위 내에선 객체의 이름 없이 객체에 접근할 수 있습니다(it, this 등) 기본적으로 5가지 함수는 같은 기능을 하지만 표현식이 어떻게 되는지, 블록 내에서 객체 사용법에 따라 구분합니다 📍 let 함수원형 public inline fun T.let(block : (T) -> R): R 객체를 블록의 인자(T)로 넘기고, 람다의 결과값(R)을 반환합니다. val numbers = mutableListOf("one", "two", "..

💡 Kotlin 2022.07.14

[Android] RecyclerView - MultiViewHolder(2)

2021.05.15 - [Android] - [Android] RecyclerView (1) - Multi ViewHolder [Android] RecyclerView (1) - Multi ViewHolder 안녕하세요 :) 오늘은 RecyclerView를 사용해보겠습니다 굉장히 자주 쓰이는 부분이기에 저 또한 더 자세히 알아두고자 정리해보려 합니다. (사용 빈도는 높지만 프로젝트를 처음부터 구현하지 않 kong-droid.com 기존 포스팅이 존재하지만, 기존 포스팅에선 같은 모델에서 type에 따라 나누는 방식을 사용했지만 보통 RecyclerView를 사용할 때 다양한 Model을 사용하기 때문에 ViewHolder별로 다른 DTO를 MultiViewHolder로 보이는 방식을 사용해 보겠습니다 코..

📱 Android 2022.07.13

[Android] Fragment LifeCycle

2022.07.03 - [Android] - [Android] Activity LifeCycle 🧐 [Android] Activity LifeCycle 🧐 안녕하세요 오늘은 Activity의 LifeCycle에 대해 알아보겠습니다 :) 수없이 봐온 LifeCycle이지만, 더 상세하게 알아둔다면 좀 더 좋은 구조를 가진 앱을 개발할 수 있을 것 같아요 💪 위의 사진 순서대 kong-droid.com Activity LifeCycle에 이어서 Fragment LifeCycle에 대해서도 알아볼텐데 거의 비슷하지만, Fragment에 좀 더 추가된 부분들이 있습니다 그리고, 2020년에 onActivityCreated가 Deprecated 되면서 Lifecycle이 아래와 같이 변했습니다 Fragment의 ..

📱 Android 2022.07.06

[Android] 4대 Component

Component Application의 구성 요소입니다 Manifest 파일에 등록 필수 🔍 시스템에 컴포넌트를 알려야하기 때문에 일반 클래스와의 차이 일반 클래스: 생명주기 관리 개발자 코드 컴포넌트 클래스 : 안드로이드 시스템에서 생명주기 관리 또, 앱 안에서 독립된 실행단위로 이로 인해 안드로이드는 앱 실행 시점이 다양합니다 안드로이드에선 4개의 Component가 존재하는데, 각각 Component들에 알아보겠습니다 생성방법이나 사용법에 대해선 자세히 다루진 않겠습니다 😭 1. Activity 화면을 구성하고 사용자와 상호작용을 담당하는 컴포넌트 2. Broadcast Receiver 시스템에 어떤 이벤트가 발생 (ex.부팅, 배터리상태, 화면 On/Off)하면 실행되는 컴포넌트 Broadcas..

📱 Android 2022.07.05

[Android] Activity LifeCycle 🧐

안녕하세요 오늘은 Activity의 LifeCycle에 대해 알아보겠습니다 :) 수없이 봐온 LifeCycle이지만, 더 상세하게 알아둔다면 좀 더 좋은 구조를 가진 앱을 개발할 수 있을 것 같아요 💪 위의 사진 순서대로 알아보겠습니다 1. onCreate() 최초로 1회만 실행되기 때문에 필수로 구현되어야 하는 부분이고, 초기 1회만 실행되어야 하는 부분을 넣어줍니다 주로 setContentView()를 onCreate에서 호출합니다 2. onStart() 사용자에게 화면이 보여질 때 호출되고, 여러 번 호출이 가능합니다 3. onResume() 사용자와 상호작용을 할 수 있을 때 호출되며, 여러 번 호출이 가능합니다 즉, 포커스를 얻을 때 실행되는 부분이며 액티비티가 포커스를 잃기 전까지 이 상태에 ..

📱 Android 2022.07.03

[Kotlin] 배열

안녕하세요 😊 코틀린에서 배열을 생성하고 사용하는 방법에 대해 알아보고자 합니다 포스팅에서는 Int형 배열을 생성하는 방법을 예로 들겠습니다 일차원 배열 생성하기 코틀린을 이용하여 다양한 방법으로 배열을 생성해보겠습니다 1. arrayOf() 배열의 선언과 동시에 데이터를 넣는 방법으로, 자료형 선언 없이 ()안에 데이터를 넣어주면 됩니다 Array 형태로 생성됩니다 val arr1 = arrayOf(1,2,3) // Array 2. 자료형ArrayOf() 배열의 선언과 동시에 데이터를 넣는 방법으로, 자료형ArrayOf()로 선언합니다 IntArray 형태로 생성됩니다 val arr2 = intArrayOf(1,2,3) // IntArray 3. arrayOfNulls(배열 크기) 비어있는 배열을 먼저..

💡 Kotlin 2022.07.02