Tag: algorithm

[Data Structure] Binary Search Tree

이진 탐색 Tree (Binary Search Tree)이진 탐색 Tree는 데이터의 삽입, 삭제, 탐색 등이 자주 발생하는 경우에 효율적인 구조이다. 같은 값을 갖는 Node가 없어야 한다. 왼쪽 Sub Tree에 있는 모든 데이터는 현재 Node의 값보다 작고, 오른쪽 Sub Tree에 있는 모든 Node의 데이터는 현재 Node의 값보다 크다. 데이터

[Data Structure] Binary tree

이진 트리 (Binary tree)이진 트리는 모든 Node들의 자식 Node가 두 개 이하인 트리를 의미한다. 서브 트리를 왼쪽 서브 트리와 오른쪽 서브 트리로 구분한다. 단말 Node를 제외한 나머지 Node가 두 개의 자식 Node를 가지고 있는 트리를 완전 이진 트리(complete binary tree)라고 한다. 트리의 마지막 level까지 모든

[Data Structure] Queue

Queue는 각 Data들을 순차적으로 넣었다가 순차적으로 빼내는 FIFO(First In First Out) 구조이다. 기본 연산으로 push로 rear에 데이터를 추가하고 pop으로 front의 데이터를 가져오는 방식을 가진다. 배열(Array)로 구현한 Queue12345678910111213141516171819202122232425262728293

[Data Structure] Stack

Stack은 각 Data들을 순차적으로 넣었다가 역순으로 빼내는 LIFO(Last In First Out) 또는 FILO(First In Last Out) 구조이다. 기본 연산으로 push로 top에 데이터를 추가하고 pop으로 top의 데이터를 가져오는 방식을 가진다. Stack은 제한된 용량을 가지도록 구현되기 때문에 Stack이 가득 찼을 때 push

[Data Structure] Linked-list

Linked List는 각 Data들을 Pointer로 연결하여 관리하는 구조이다. 첫 번째 Node인 Head pointer가 다음 Node를 가리키고 그 Node는 다음 Node를 가리킨다. 맨 마지막 Node에는 더 이상 다음 Node를 가리키는 Pointer가 없는데 이를 Tail Node라 한다. 단순 Linked list (Singly Linke

[Algorithm] Quick sort

한 평생 Bubble sort만 사용하다가 이대로 계속 무식하면 안되겠다 싶어서 찾아보았다. Quick sort는 Charles Antony Richard Hoare 경에 의해 개발되었다. 알고리즘 List 중 하나의 Element를 선택한다. 이를 Pivot 이라 부른다. Pivot을 기준으로 좌측에는 작은 Element들이 오도록, 우측에는 큰 Elem

Big-O Complexity

Big-O 분석법 (Big-O analysis)입력 값의 개수에 따라 알고리즘이 수행되는데 걸리는 시간을 바탕으로 알고리즘의 효율성을 평가하는 실행 시간 분석법. Big-O 분석의 적용 입력 값이 무엇인지 확인하고 어떤 것을 n으로 놓아야 할지 결정한다. 알고리즘에서 수행해야 할 연산 횟수를 n의 식으로 표현한다. 차수가 제일 높은 항만 남긴다. 모든 상수

Codility

https://codility.com/programmers/lessons/ Iterations프로그램 내에서 반복되는 부분. 보통 for나 while. For12345678for some_variable in range_of_values: loop_bodyfor i in range(0, 100) : print ifor i in range(10

[Java] Queue

Queue의 종류Queue는 공통적으로 Front, Rear 두 개의 pointer를 갖는다. Queue는 Array나 Linked List를 사용하여 구현한다. Simple or linear Queue 일반적으로 Linked-list로 구현된다. FIFO(First In First Out)의 기본을 기킨다. Circular Queue 말 그대로 he