싯벨트 2025. 3. 11. 22:09
728x90

  • 배열 생성하고 0으로 채우기: new Array(n).fill(0)
  • 중복 제거하기: […new Set(arr)]
  • 반복문에서 인덱스와 값 활용하기: for(cosnt [i, key] of arr.entries()){ }
  • Set 자료구조에 추가: Set.prototype.add()

시간 복잡도

  • 임의 접근이라는 방법으로 배열의 모든 위치에 한 번에 접근 가능 - O(1)
  • 삽입에 대한 시간 복잡도 - O(N)
  • O(NlogN): sort()
  • O(N): map(), reduce(), 스프레드 연산자, new Set(arr)
  • O(N^2): for 이중 반복문

고려할 점

  • 할당할 수 있는 메모리 크기 - 정수형 1차원 배열 1000만개, 2차원 배열 3000*3000 크기
  • 중간에 데이터 삽입이 많은지 → 잦다면 시간 복잡도가 높아짐

메서드 비교

splice vs slice

  • slice: 배경 일부 복사 - 원본 배열 유지 / 새로운 배열 반환
    • slice(시작 인덱스, 끝 인덱스)
const arr = [1, 2, 3, 4, 5];

console.log(arr.slice());    // [1, 2, 3, 4, 5] 
console.log(arr.slice(2));   // [3, 4, 5]
console.log(arr.slice(2,4)); // [3, 4]
  • splice: 배열 요소 추가/ 제거 - 원본 배열 변경/ 잘라낸 요소 배열 반환
    • splice(시작 인덱스, 삭제할 개수, 추가할 요소1, 추가할 요소2)
// splice 마다 초기 설정된 원본 배열 가정
const arr = [1, 2, 3, 4, 5]; 

console.log(arr.splice(2));   // [3, 4, 5]
console.log(arr);             // [1, 2]
console.log(arr.splice(2,2)); // [3, 4] 
console.log(arr);             // [1, 2, 5]
console.log(arr.splice(2,2,"a","b")); // [3, 4]
console.log(arr);             // [1, 2, "a", "b", 5]