자료구조란 데이터를 메모리에 배치하고 저장하는 방식입니다. 자료구조를 사용하는 이유 데이터를 효율적으로 저장, 관리하여 메모리를 효율적으로 사용하기 위함입니다. 적절한 자료구조의 사용은 메모리의 용량을 절약해주고, 실행시간을 단축시켜줄 수 있습니다. -> 예를 들면, 특정 원소를 Search하거나 add할 때(..등), 자료구조마다 그 방식이 다르고, ...
Stack에 대해 알아보도록 하겠습니다. Stack이란 들어오고 나가는 방향이 하나인 Data Structure를 말합니다. 들어왔던 방향으로 나가야하기 때문에 가장 먼저 들어온 데이터가 마지막으로 나가게 됩니다. 이것을 LIFO(Last In First Out)라고 합니다. 쉽게 이해하기 위해 예를 들어보겠습니다. 책이 쌓여있는 모습 프링글스 감자칩...
Queue에 대해 알아보도록 하겠습니다. Queue란 들어오고 나가는 방향이 양쪽 2개인 Data Structure를 말합니다. 들어왔던 방향 그대로 나가기 때문에 가장 먼저 들어온 데이터가 가장 먼저 나가게 됩니다. 이것을 FIFO(First In First Out)라고 합니다. Queue의 실제 사용 예시 캐시(Cache) 구현 우선순위가 같은 ...
Linked List에 대해 알아보도록 하겠습니다. Linked List란 이전 node에 다음 node의 메모리 주소 값이 저장되어 연결된 Data Structure를 말합니다. Linked List Data structure의 methods -- search() insert() remove() Linked List Data structure의 pr...
Graph에 대해 알아보도록 하겠습니다. Graph란 node와 node를 연결하는 간선을 하나로 모아놓은 Data Structure를 말합니다. 용어. Vertex(정점) : 노드(node)와 같습니다. Edge(간선) : 포인터와 같습니다. degree(차수) : 무방향 그래프에서 인접한 정점의 수 in-degree(진입 차수) : 다른 정점에서 오...
트리는 하나의 부모 노드에서 아래로 내려오는 Graph라고 할 수 있습니다. -- >앞서 보인 큐(Queue), 스택(Stack) 등은 자료구조에서 선형 구조라 한다. 선형 구조란 자료를 구성하고 있는 데이터들이 순차적으로 나열시킨 형태를 의미합니다. 이번에 배울 트리는 비선형 구조입니다. 비선형 구조는 선형구조와는 다르게 데이터가 계층적(혹은 망)으로 구...
Hash Table에 대해 알아보도록 하겠습니다. 해싱은 요소에 빠르게 액세스하기 위해 주어진 값을 특정 키로 매핑하는 데 사용되는 해시 함수라는 특수 함수를 사용하도록 설계된 중요한 데이터 구조입니다. -- 매핑 효율성은 사용 된 해시 함수의 효율성에 따라 다릅니다. 해시함수(hash function)란 데이터의 효율적 관리를 목적으로 임의의 길이의 ...
자바스크립트에서는 클래스를 사용하지 않았다. 물론, ES6에서 클래스가 새롭게 생겼지만, 원래는 없었다. 그럼에도 불구하고 자바스크립트는 완전한 객체지향언어이다. 자바스크립트의 모든 것은 객체이고, 객체로서 동작한다. 객체를 만들 수 있어야 하고, 부모 객체를 상속할 수 있어야 한다. 자바스크립트는 생성자 함수를 사용해 객체를 만든다. 자바스크립트는 pr...
n-Queens 알고리즘은 n*n 체스판에서 Queen이 다른 체스말을 공격하지 못하도록 배치하는 방법의 수를 구하는 알고리즘입니다. (Queen은 상하좌우로 자유롭게 거리에 상관없이 움직일 수 있습니다.) (Queen은 대각선으로 자유롭게 거리에 상관없이 움직일 수 있습니다.) image.png 배치하는 방법의 수를 구하기 앞서, 코드스테이츠에서 미리...