개발공부
[알고리즘] Queue 큐: 기본정리 - DoublyLinkedList(이중연결 리스트), Ring Buffer(원형큐),ArrayList, Stack으로 Queue 구현하기 - Kotlin
목차 Queue 개념 큐는 영화티켓을 사기 위해 기다릴 때, 롤 큐를 기다릴 때처럼 실생활에 적용되는 사례가 많습니다. 이 큐의 특징은 선입선출(FIFO: 먼저 들어온 것이 먼저 나가는 형태)이라는 것입니다. Queue 인터페이스 구현 큐에 인터페이스를 만들어보겠습니다. interface Queue{ fun enqueue(element: T): Boolean fun dequeue():T? val count: Int get val isEmpty: Boolean get() = count == 0 fun peek(): T? } 위에 4가지에 키 함수가 있습니다. enqueue: 맨뒤에 큐에 element를 삽입해준 후 성공하면 true를 반환합니다. dequeue: 큐에 가장 앞부분에 element를 지우고 ..
[알고리즘] Stack 스택: 기본정리 - pop, push, peek, count - Kotlin
목차 스택 자료구조 개념 스택은 아이템을 쌓아 올리는 구조입니다. 제거할 때도 가장 위에 있는 아이템부터 제거하게 되고 추가할 때도 위에서부터 추가합니다. 그래서 스택에는 2가지 동작이 있습니다. 1. push: 스택에서 가장 위에 element를 추가합니다. 2. pop: stack에 가장 위에 있는 element를 제거합니다. 이 의미는 한쪽에서만 데이터를 추가하고 제거할 수 있다는 뜻입니다. 우리는 이러한 stack 구조를 LIFO(last-in-first-out - 가장 마지막으로 추가한 게 가장 먼저 나가는 구조)라고 부릅니다. 스택을 코드로 표현하면 아래와 같습니다. interface Stack { fun push(element:Element) fun pop(): Element? } 스택은 프..
[알고리즘] LinkedList 링크리스트: 활용 예제 - 뒤집기, 합치기, 가운데 값 찾기 - Kotlin
목차 저번 포스트에서는 LinkedList에 개념과 구현 방법을 다뤄봤는데요, [Algorithm] Kotlin LinkedList 개념 - node 추가하기, 제거하기 목차 LinkedList 개념 LinkedList는 각 Node들이 다음 Node에 연결돼있는 리스트입니다. LinkedList에는 두 가지가 있습니다. 1. Singly Linked List: 다음 node에 한 방향으로 연결된 리스트입니다. 2. Doub.. underdog11.tistory.com 이 포스트에서는 LinkedList로 가장 자주 활용되는 3가지 타입에 문제를 다뤄보겠습니다. LinkedList 뒤집기 아래 그림과 같이 LeetCode에 예제를 통해 LinkedList를 뒤집어 보겠습니다. 해설 - Reverse Li..
[알고리즘] 기본으로 알아야할 Kotlin Collection Interface 종류 및 구현 - Iterable, Collection, MutableIterable, MutableCollection 사용예제
목차 이포스트는 Data Structures & Algorithms in Kotlin을 참고하여 작성하였습니다. Kotlin Collection Interface 이번 포스트에서는 Kotlin Collection Interface에 대해 다뤄보겠습니다. Kotlin Collection Interface 은 무엇일까요? Kotlin Library의 인터페이스는 어떤 타입을 리턴하는지 말해주고 각 타입은, 각각의 특성을 가지고 있습니다. 그리고 Collection Interface는 4 티어로 나눠집니다. 인터페이스 설명 Tier 1 Iterable Iterable 타입은 element를 Iterator를 통해 순차적으로 접근합니다. Tier 2 Collection Iterable 타입인 동시에, eleme..