Module 0
기초와 Java review
Java 문법, generics, wrapper type, Iterable, Iterator, Comparable, Comparator를 JS/TS와 연결해 정리했습니다.
- / Enhanced for loop는 iterator를 사용합니다
- / Comparable은 자연 정렬입니다
- / Comparator는 외부 정렬 규칙입니다
Data Structures & Algorithms
이 페이지는 DSA I 노트에 있는 내용만 다룹니다. Java review, Iterator/Comparator, Big-O, ArrayList, Recursion과 Binary Search, LinkedList, Stack, Queue입니다.
Module 0
Java 문법, generics, wrapper type, Iterable, Iterator, Comparable, Comparator를 JS/TS와 연결해 정리했습니다.
Module 0
Big-O는 worst-case growth에 대한 가장 타이트한 upper bound로 사용하고, 상수와 낮은 차수 항은 제거합니다.
Module 1
ArrayList는 backing array를 사용하고, 중간 삽입/삭제에서 원소를 shift하며, 꽉 차면 더 큰 배열로 복사합니다. 재귀는 base case와 base case로 향하는 변화가 필요합니다.
Module 2
LinkedList는 random access를 포기하는 대신 포인터 갱신으로 데이터를 조작합니다. SLL, DLL, CLL의 edge case와 비용을 비교했습니다.
Module 3
Stack은 한쪽 끝만 사용하고, Queue는 뒤에 넣고 앞에서 뺍니다. ArrayQueue는 circular array를 쓰며 resize 때 unwrap합니다.
선의 모양은 증가율을 보여주고, 커서는 선택한 입력 크기의 값을 읽습니다.
1
5
32
160
1,024
연산을 고른 뒤 적용하면 위치 변화가 보입니다.
factorial(4)를 호출하고 반환을 기다립니다.
목표값: 19. 19 > 13이므로 mid까지의 왼쪽 절반을 제외합니다.
1. low 0, mid 3, high 6: 19 > 13이므로 mid까지의 왼쪽 절반을 제외합니다.
Stack은 한쪽 top에서만 변하고, Queue는 back으로 들어가 front에서 나갑니다.
Stack / LIFO
Queue / FIFO
backing array가 가득 차면 더 큰 배열을 만들고 기존 원소를 복사한 뒤 새 데이터를 넣습니다.
m1-arrays-and-arraylists.md
각 recursive call은 더 작은 call을 기다립니다. base case가 반환되면 call stack이 거꾸로 풀립니다.
m1-recursion.md + refs/m1-recursion-summary.md
ArrayQueue는 front index를 유지합니다. Enqueue는 (front + size) % capacity에 들어가고, dequeue는 front를 modulo로 한 칸 이동합니다.
m3-stacks-and-queues.md
15개 원본 파일