배열은 선형 데이터 구조입니다. 배열은 메모리에 연속적으로 할당되므로 배열의 인덱스를 통해 값을 가져오는 것은 산술 연산입니다. 산술 연산은 O(1)로 수행됩니다. 배열에는 인덱스 0의 메모리 주소가 있습니다. 인덱스 번호와 한 요소의 크기(int일 경우 4바이트)를 기본 주소에 더하면 해당 인덱스 값의 주소를 얻을 수 있습니다. i번째 인덱스 주소 = 0번째 인덱스 주소 + i x (한 요소의 크기) 예시 int[] arr = {1,2,3,4,5} arr 배열에서 인덱스 0의 메모리 주소를 100이라고 가정했을 때 3번째 인덱스 주소를 얻을려면 100 + 3 * 4 = 112의 메모리 주소값을 얻습니다.
행렬이란? 행렬은 행과 열로 구성된 2차원 배열입니다. 항목의 가로 또는 세로 줄로 요소를 배열하는 것입니다. 행렬의 선언 행렬의 선언은 1차원 배열과 매우 유사합니다. int[][] arr = new int[3][5]; 행렬의 첫번째 요소는 arr[0][0]입니다. 첫번째 대괄호 안의 값은 행 번호를 나타내고 두 번째 대괄호 안의 값은 열 번호를 나타냅니다. 행렬의 초기화 int[2][2] arr = {{1,2},{3,4}}; 2개의 행과 2개의 열을 가진 행렬의 구성을 가지면서 값을 넣어줍니다. 행렬의 접근 1차원 배열과 마찬가지로 행렬에서도 무작위 요소에 접근이 가능합니다. arr[i][j]를 사용하여 i번째 행과 j번째 열에 있는 요소에 접근할 수 있습니다. int value = arr[i][j]..
배열이란? 배열은 인접한 메모리 위치에 저장된 동일한 데이터 유형 모음입니다. 쉽게 생각하면 계단이라고 생각하시면 됩니다. 계단에서 5걸음 올라가면 5번째 위치이고 3걸음 올라가면 3번째 위치입니다. 걸음 수만 알면 어디 위치인지 알 수 있습니다. 배열의 첫 번째 요소의 메모리 위치에 오프셋을 추가하기만 하면 각 요소의 위치를 쉽게 계산할 수 있습니다. 배열의 기본 인덱스의 값은 0이고 배열의 길이가 늘어날 수록 인덱스는 1씩 증가합니다. 배열의 기본 용어 인덱스 : 배열의 요소의 위치는 인덱스로 식별됩니다. 배열의 인덱스는 0부터 시작합니다. 배열 요소 : 배열에 저장된 항목입니다. 배열 길이 : 저장할 수 있는 배열의 요소 수에 따라서 달라집니다. 배열의 선언 주어진 크기의 배열에 메모리를 할당하는 ..
덱 개요양쪽 끝에서 삽입과 삭제가 모두 가능합니다.큐와 스택의 특징을 모두 가지고 있습니다.덱 동작 원리addFirst(el) : 덱의 앞쪽에 데이터를 추가합니다.addLast(el) : 덱의 뒤쪽에 데이터를 추가합니다.removeFirst() : 덱의 앞쪽 데이터를 제거 후 반환합니다.removeLast() : 덱의 뒤쪽 데이터를 제거 후 반환합니다.peekFirst() : 덱의 앞쪽 데이터를 반환합니다.peekLast() : 덱의 뒤쪽 데이터를 반환합니다.isEmpty() : 덱이 비어있는지 확인합니다.덱 배열 코드 예시class Deque { constructor() { this.deque = [] } isEmpty() { return this.deque.length === 0 } addFi..
큐 개요선입선출(FIFO) 구조를 가지고 있는 자료구조입니다.먼저 집어넣은 데이터가 가장 먼저 나오는 자료구조입니다.데이터를 임시로 저장했다가 나중에 꺼내서 사용할 때 유용합니다.큐의 FIFO 원리줄을 첫 번째 선 사람이 가장 먼저 서비스를 받습니다.큐에서 제거될 첫 번째 항목은 앞쪽이기 때문에 head라고 합니다. 가장 최근에 추가된 위치는 가장 뒤쪽이기 때문에 rear라고 합니다.큐 동작 원리enqueue(el) : 데이터를 큐의 뒤쪽에 추가합니다.dequeue() : 큐의 앞쪽에서 데이터를 제거 후 반환합니다.front() : 큐의 앞쪽에서 데이터를 제거하지 않고 반환합니다.isEmpty() : 큐가 비어있는지 확인합니다.size() : 큐의 크기를 반환합니다.큐 배열 코드 예시class Queue..
스택 개요가장 기본적인 선형 자료구조 중 하나로 스택의 상단에서 새로운 요소의 삽입과 삭제가 발생합니다.한 쪽 끝에서만 자료를 넣거나 뺄 수 있는 후입선출(LIFO) 방식으로 데이터를 처리하는 구조입니다.스택은 맨 위에 있는 요소에만 접근할 수 있기 때문에 스택의 맨 위에 대한 포인터를 유지해야 합니다.데이터를 저장하고 검색하는 데 사용됩니다.스택 동작 원리push(item) : 새로운 항목을 스택의 top에 추가합니다.pop() : 스택의 맨 위에 있는 데이터를 제거하고 반환합니다.peek() : 스택의 맨 위에 있는 데이터를 반환하지만 제거하지 않습니다.isEmpty() : 스택이 비어있는지 확인합니다.size() : 스택의 크기를 반환합니다.스택의 push 작업요소를 스택에 푸시하기 전에 스택이 가..