Balanced Binary Search Tree(균형 이진탐색 트리) 이진 탐색트리에 새로운 노드가 삽입이 되면 부모의 노드보다 작은 값은 왼쪽으로 큰 값은 오른쪽으로 추가하면서 서브트리가 계속 구성되어진다. 이진탐색트리의 치명적인 단점은 자료가 많아질수록 트리의 높이(height)가 커지기 때문에 검색에 불리해지고 최악의 경우 (...
[DataStructure] Stack(스택)
스택이란? 마지막에 들어온 데이터를 먼저 내보내는 후입선출(LIFO: Last-In-First-Out)을 표현하기 위한 자료구조 예를 들어 접시 쌓기를 예로 들 수 있습니다. 접시를 쌓을 때 위에서부터 차곡차곡 쌓지만 빼낼때는 가장 맨위의(마지막에 들어온) 접시부터 빼내게 됩니다. 스택의 장점 스택에서 데이터를 추가하거나 삭제하는...
[DataStructure] 우선순위 큐(Priority Queue)
우선순위 큐(Priority Queue)란? 우선순위에 따라 우선순위가 높은 객체가 먼저 나오는 자료구조 우선순위 큐는 3가지 방법으로 구현할 수 있다. 1)배열 사용 데이터 삽입, 삭제과정에서 데이터를 밀고 당기는 연산을 해야 하는 단점이 존재 2)...
[DataStructure] Queue(큐)
Queue(큐)란? 먼저 들어온 데이터를 먼저 내보내는 선입선출(FIFO: First-In-First-Out) 구조의 자료구조 예를 들어, 영화관 매표소에서 예매를 하기 위해 손님들은 순서대로 줄을 스게 되며 먼저 온 손님부터 영화를 예매하게 됩니다. Java에서는 Queue를 사용하기 위해 java.util.Queue를 구현한 클래스...
[DataStructure] Deque(덱)
Deque(덱) Deque(덱 혹은 데크)은 Double-Ended Queue의 줄임말로 큐의 양쪽으로 엘리먼트의 삽입과 삭제를 수행할 수 있는 자료구조이다. 카프카의 소스코드 내부에서 Deque 클래스를 사용한다. 덱(Deque)은 어떤 쪽으로 입력하고 어떤 쪽으로 출력하느냐에 따라서 스택(Stack)으로 사용할 수도 있고, 큐(Que...
[DataStructure] Array 와 List(그리고 Java List)
Array의 개념 같은 타입의 여러 데이터를 하나의 이름으로 그룹핑해서 관리하기 위한 자료구조 index와 값의 쌍으로 구성 index는 값에 대한 유일무이한 식별자(List에서 인덱스는 몇 번째 데이터인가 정도의 의미를 가짐) 연속된 메모리의 공간으로 이루어져 있다. 논리적 저장 순서와 물리적 저장 순서가 일치 => inde...
[DataStructure] Array & ArrayList & LinkedList의 비교
Array&ArrayList&LinkedList의 비교 ArrayList와 LinkedList는 모두 Java에서 제공하는 List 인터페이스를 구현한 Collection 구현체이며, 인터페이스만 같을 뿐 내부적으로 동작하는 방식은 다르다 1) Array 같은 타입의 여러 데이터를 하나의 이름으로 그룹핑해서 관리하기 위한 ...
[DataStructure] 시간복잡도
시간 복잡도(Time Complexity) 알고리즘을 수행하기 위해 프로세스가 수행해야하는 명령어의 실행 횟수(연산 횟수)를 수치화 한것 왜 실행시간이 아닌 연산수치로 판별할까? 명령어의 실행시간은 컴퓨터의 하드웨어 또는 프로그래밍 언어에 따라 편차가 크게 달라지기 때문에 명령어의 실행 횟수만을 고려하는 것이다. Big-O 표기법 시...
[TDD] TDD 관련 블로그
TDD 관련 블로그 https://sunghs.tistory.com/134?category=673786 https://scshim.tistory.com/321?category=961195
[TDD] Junit
Junit5 Spring boot 2.2부터는 기본으로 junit5 모듈을 사용하게 된다. Junit4 는 단일 모듈이였던 반면, Junit5는 크게 Junit Jupiter, Junit Platform, Junit Vintage모듈로 구성되어진다. Junit Platform 테스트들을 실행하기 위한 뼈대 테스트를 발견하고 테스트...