알고리듬 #5 | 배열(순차 리스트)

HyeonWooGa·2022년 8월 25일
0

알고리듬

목록 보기
5/18

배열 (순차 리스트)

정의

  • 연관된 데이터를 연속적인 형태로 구성된 구조를 가집니다.
  • 배열에 포함된 원소는 순서대로 번호(index)가 붙습니다.

특징

  • 고정된 크기를 가지며 일반적으론 동적으로 크기를 늘릴 수 없습니다.
    • 자바스크립트와 같은 스크립트 언어는 동적으로 크기가 증감될 수 있습니다.
  • 원하는 원소의 index를 알고 있다면 O(1)로 원소를 찾을 수 있습니다.
  • 원소를 삭제하면 해당 index에 빈자리가 생깁니다.

삭제와 추가

  • 삭제와 추가에 각각 O(n) 이 소요됩니다.
  • 따라서 추가삭제가 반복되는 로직이라면 배열 사용을 권장하지 않습니다. (Update,Delete)
  • 탐색이 많은 경우에 유리합니다.(Read)

JavaScript 의 배열

4가지 생성법

1) 빈 Array

let arr1 = [];
console.log(arr1);
// []

2) 미리 초기화된 Array

let arr2 = [1, 2, 3, 4, 5];
console.log(arr2);
// [1, 2, 3, 4, 5]

3) fill 사용, 많은 값을 같은 값으로 초기화

let arr3 = Array(10).fill(0);
console.log(arr3);
// [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

4) from 사용, 특정 로직으로 초기화

let arr4 = Array.from({ length: 100 }, (_, i) => i);
console.log(arr4);
// [0, 1, 2, 3, 4, ...,96, 97, 98, 99]

추가, 삭제법

1) push 메서드

const arr = [1, 2, 3];

// 4가 끝에 추가됩니다.
arr.push(4); // O(1)

// 여러 개를 한 번에 추가할 수 있습니다.
arr.push(5, 6); // O(1)
console.log(arr);
// [1, 2, 3, 4, 5, 6]

2) splice 메서드

const arr = [1, 2, 3, 4, 5, 6];

// 3번 인덱스에 128을 추가합니다.
arr.splice(3, 0, 128); // O(n)
console.log(arr);
// [1, 2, 3, 128, 4, 5, 6]

// 3번 인덱스 값을 제거합니다.
arr.splice(3, 1); // O(n)
console.log(arr);
// [1, 2, 3, 4, 5, 6]

특이점

  • 자바스크립트의 Array 는 동적입니다.
  • 인덱스에 숫자가 아닌 논리값, 문자열도 동작합니다.
    • 자바스크립트의 배열이 근본적으로 객체 타입이기 때문입니다.
    • 길이에 영향을 미치지 않습니다.
    • 알고만 넘어갑니다. 사용 X
const arr = [1, 2, 3, 4];

arr["string"] = 10;
arr[false] = 0;

console.log(arr);
// [1, 2, 3, 4, string: 10, false: 0]
console.log(arr.length)
// 4

arr[4] = 5;

console.log(arr);
// [1, 2, 3, 4, 5, string: 10, false: 0]
console.log(arr.length)
// 5

profile
Aim for the TOP, Developer

0개의 댓글