Dev/코딩테스트
배열
싯벨트
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]