// 1. 임의의 위치에 있는 원소를 확인/변경 = O(1)
// 확인
const element = arr[index];
// 변경
arr[index] = newValue;
// 2. 원소를 끝에 추가 = O(1)
arr.push(newElement);
// 3. 마지막 원소를 제거 = O(1)
arr.pop();
// 추가로 JS는 shift, unshift를 통해 첫번째 원소를 추가/제거도 가능하다 = O(N)
arr.shift()
arr.unshift()
// 4. 임의의 위치에 원소를 추가/임의 위치의 원소 제거 = O(N)
// 추가
arr.splice(index, 0, newElement);
// 제거
arr.splice(index, 1);
https://youtu.be/mBeyFsHqzHg?si=ms5wKUyP9_693Kr6
영상 중 17분30초에 좋은 예시가 나온다. 다시 한번 볼만한 부분인것 같다.
문제에서 만약 모든 수를 하나하나 쌍으로 검사하여 100이 되는 수를 찾는다면
시간복잡도는 모든 수를 검사하는 O(N)이 걸리고 이 과정을 N번을 검사하니 O(N^2)이 된다.
But, 이 방법을 사용하지 않고 한번만 검사하여 O(N) 걸리는 방법이 있는데
위 방법을 반복하면 77을 검사할때 100이 되기 위한 23은 등장하게 되었으니 O(N) 만으로 찾을수 있게된다
배열문제는 배열을 이용하여 풀 수 있는 문제가 꽤나 있었던 것 같다. 백준의 알파벳 문제가 가장 기본적인 예시
또한 배열문제에서 시간 제한이 있을 때 새로운 배열을 생성 후 최소한의 시간을 이용하여 푸는 생각을 하는 습관을 들이는것도 중요하다 느낌