본문 바로가기

분류 전체보기11

[Kotlin/자료구조] Stack과 Queue에 대하여 Stack(스택)과 Queue(큐)는 선형 자료구조 중 하나이다. 이에 대해서 알아보고 Kotlin에서는 어떻게 사용하는지 알아보는 포스트이다. 1. Definition Stack(스택)의 정의 Stack은 삽입과 삭제가 한쪽 끝에서 이루어지는, 순서가 매겨진 리스트이다. LIFO(Last In First Out, 후입 선출) 혹은 FILO(First In Last Out, 선입 후출)의 형태이다. 위 그림과 같이 데이터를 삽입할 때 마다 바닥에 순서대로 쌓이며 꺼낼 때에는 가장 나중에 들어온 데이터가 꺼내진다. Stack에서의 삽입과 삭제의 행위를 각각 push(삽입)와 pop(삭제)이라고 부른다. Java의 단일 클래스로 Stack 클래스(extends Vector)가 존재하며 Kotlin에서 사용할.. 2021. 4. 25.
[Kotlin/자료구조] Linked List에 대하여(2) - Singly Linked List 삭제와 Doubly Linked List 노드 삭제 (in Singly Linked List) Singly Linked List내에 있는 노드를 삭제하는 방법은 삽입하는 것과 마찬가지로 3가지 방식으로 가능하다. 1️⃣ Head (첫 노드) 삭제하기 - Head를 두 번째 항목으로 Pointer나 Reference를 옮긴다. - 기존 노드 Component를 모두 null로 변경한다. 더보기 C에서는 OS 메모리에 직접 접근하기 때문에 삭제할 노드를 메모리에서 삭제(free) 해줘야하지만, 코틀린(자바)은 JVM에서 알아서 처리해준다.(Java GC) 하지만 기존 노드를 그대로 유지시킨다면 GC가 콜렉팅하지 않을 수 있기에 기존 항목을 null로 변경해서 GC를 도와주자. C에서는 임시 노드를 생성하여 기존 노드를 기억하고 있다가 Pointer.. 2021. 4. 17.
[Kotlin/자료구조] Linked List에 대하여(1) - 개요 및 삽입 들어가기 전에 - Why Linked List 다수의 데이터를 쉽고 효과적으로 처리할 수 있는 집합, 그룹 등을 의미하는 Collection이 존재한다. 크게 Collection에는 List와 Set으로 나누어져 있으며(map은..) 이는 순서의 유무에 따라 사용을 결정한다. List를 다루기 위해 가장 쉬운 방법이자 잘 알려져있는 개념은 Array라고 생각한다. "그렇다면 Array만 사용하면 될 것이지 왜 Linked List가 나왔을까?" Array에 대하여 잠깐 생각해보자면 고정된 크기를 갖는다는 특징이 있다. 위 특징으로 단점을 생각해보자면, 크기가 유동적일때 불편하겠구나, 그렇다고 크기를 많이 잡게되면 낭비가 될테고. 특정 위치에 삽입을 하는 것도 자리를 만들기 위해서 다른 요소들을 뒤로 밀어.. 2021. 4. 11.