[javascript] 동적 배열 (Dynamic Array) 데이터 구조

동적 배열은 고정된 크기 대신 필요에 따라 크기를 자동으로 조절할 수 있는 데이터 구조입니다. 동적 배열은 배열의 크기를 동적으로 조절하면서도 상수 시간에 접근할 수 있는 장점을 가지고 있습니다.

동적 배열의 구조

동적 배열은 일반적으로 내부적으로 정적 배열을 사용하며, 원소의 삽입, 삭제 시에 배열의 크기를 동적으로 조절합니다.

다음은 동적 배열의 구조를 나타내는 간단한 자바스크립트 코드입니다.

class DynamicArray {
  constructor() {
    this.capacity = 1; // 초기 용량
    this.length = 0; // 길이
    this.array = new Array(this.capacity); // 정적 배열
  }

  // 배열 크기 조절
  resize(newCapacity) {
    const newArray = new Array(newCapacity);
    for (let i = 0; i < this.length; i++) {
      newArray[i] = this.array[i];
    }
    this.array = newArray;
    this.capacity = newCapacity;
  }

  // 요소 추가
  append(value) {
    if (this.length === this.capacity) {
      this.resize(this.capacity * 2); // 배열 용량 2배로 확장
    }
    this.array[this.length] = value;
    this.length++;
  }

  // 요소 삭제
  remove() {
    if (this.length > 0) {
      this.length--;
    }
    if (this.length <= this.capacity / 4) {
      this.resize(this.capacity / 2); // 배열 용량 1/2로 축소
    }
  }
}

동적 배열의 장점

동적 배열은 크기를 동적으로 조절하면서도 상수 시간에 요소에 접근할 수 있는 이점을 가지고 있습니다. 또한, 요소의 추가 및 삭제에 상수 시간을 보장함으로써 전체적인 성능이 우수합니다.

결론

동적 배열은 데이터 크기를 미리 알 수 없는 경우에 유용한 데이터 구조로, 자바스크립트를 비롯한 다양한 프로그래밍 언어에서 활용됩니다.

링크: 동적 배열 (Dynamic Array)