Developing Myself Everyday
article thumbnail
PriorityQueue & Heap

PriorityQueue 우리는 이전에 Queue의 구조에 대하여 학습한적이 있다. Queue는 First In First Out 구조로 먼저 집어넣은 데이터가 먼저 나오는 구조를 가지고 있다. 하지만 PriorityQueue는 이름에서 알 수 있듯이 Queue의 구조에서 데이터의 우선순위에 따라서 우선순위가 높은 데이터가 먼저 나오는 구조를 가지고 있다. 위의 구조는 PriorityQueue의 구조이다. 데이터를 무작위로 Enqueue 했을때 그 순서와 상관없이 우선순위가 높은 데이터가 가장 왼쪽에 위치하는 것을 알 수 있다. 구현 PriorityQueue의 구현은 Array, LinkedList, Heap으로 가능하다. 다만 Array와 LinkedList는 매번 가장 높은 우선순위의 데이터를 가장 ..

article thumbnail
ArrayList & LinkedList

이번에는 ArrayList와 LinkedList에 대해서 알아보도록 하겠다. 이름만 봐도 알 수 있듯 2개의 자료구조는 Java에서 제공하는 List 인터페이스를 구현한 Collection 구현체이다. 하지만 동작하는 기능은 서로 다르기 때문에 하나하나 알아보고자 한다. ArrayList ArrayList는 중복을 허용하고 순서를 가지며 인덱스로 원소들을 관리한다. 이 말을 들으면 우리는 바로 ArrayList는 Array와 매우 유사한 기능을 가지고 있다고 생각할 수 있다. ArrayLIst란 이름에서도 알 수 있듯이 Array의 이런 점, List의 데이터가 저장될 때 필요에 의해 자동으로 늘어나며 순서를 가지는 점을 가지고 있다. Array와 가장 큰 차이점은 Array는 처음에 크기를 지정하면 그..

article thumbnail
Queue & Stack

Queue 먼저 들어간 자료가 먼저 나오는 자료구조이다. FIFO(First In First Out, 선입선출) 또는 LILO(Last In Last Out, 후입후출) 라는 구조를 갖는다. Method Description add(E e) Queue에 객체를 추가한다. Queue의 남아 있는 space가 없을 경우 exception을 throw한다. element() Queue에 가장 먼저 들어간 객체를 return한다. offer(E e) Queue에 객체를 추가한다. 이때는 exception을 발생시키지 않고 성공 여부에 대해 return한다. peek() Queue에 가장 먼저 들어간 객체를 제거하지 않고 확인한다. poll() Queue에 가장 먼저 들어간 객체를 제거하고 해당 객체를 retur..

article thumbnail
List, Set, Map to Kotlin

우리는 자료구조를 분류할때 선형과 비선형을 기준으로 분류를 했었다. 그리고 분류한 자료구조들을 하나씩 공부해나갈 예정이다. 하지만 그 전에 Collection에있는 List, Set, Map을 학습하고자 한다. Kotlin에는 크게 List, Set, Map 3가지 Collection이 있다. 이 3가지 Collection은 중복을 허용하는지, 순서가 보장되는지에 따라 구분할 수 있다. 참고로, Kotlin Collection은 Mutable Collection과 Immutable Collection으로 구분해 사용한다. 둘의 차이는 변경이 가능한가, 불가능한가이다. List, Set, Map 모두 Mutable과 Immutable Collection을 지원한다. List List는 데이터가 저장될때 필..

article thumbnail
자료구조의 분류

자료구조란? 자료구조는 서비스나 어플리케이션에서 필요한 데이터를 메모리에 어떻게 구조적으로 잘 정리해서 담아두고 관리하고 최종적으로 가장 효율적인 방식으로 필요한 데이터에 빠르게 접근하고 필요한 수정, 삽입, 삭제를 할 수 있도록 도와준다. 서비스에서 Client에게 데이터를 제공하거나 어플리케이션에서 사용자에게 필요한 데이터를 보여주거나 효율적으로 일을 처리하기 위해서는 적합한 자료구조를 사용하는 것이 정말 중요하다. 좋은 개발자가 되기 위해서는 memort effciency에 포커스를 맞춰서 알고리즘과 자료구조를 잘 공부해야 할 것이다. 자료구조의 분류 기본적인 자료구조를 선형, 비선형 구조로 나눴을때 우리가 알아야 하는 것들이다. 자료구조를 공부할때 우리는 자료 구조 안에 있는 데이터들의 순서가 보..