### 개인 + 배열의 내용을 공부하고 정리한다. + 배열의 정의와 성질 + 1) 임의 위치에 있는 원소에 접근 = `O(1)` + 2) 임의 위치에 있는 원소를 변경 = `O(1)` + 3) 원소를 끝에 추가 = `O(1)` + 4) 마지막 원소 제거 = `O(1)` + 5) 임의 위치에 원소 추가 = `O(n)` + 6) 임의 위치에 원소 제거 = `O(n)` + 기능 구현 + 1) 임의 위치에 원소 추가: `insertAt(...)` + 2) 임의 위치의 원소 제거: `removeAt(...)`
// 샘플 배열
const arr = [1, 2, 3, 4, 5]
const insertAt = function (targetArray, value, index) {
// 입력할 배열, 입력할 내용, 입력할 인덱스 위치
console.log('짱짱센,,, 인설트엣 친구를 동작합니다...')
let preArr = []; // 앞 배열
let postArr = []; // 뒷 배열
for (let i=0; i < targetArray.length; i++) { // 슬라이스 못쓰니까 열심히 잘라보자. O(n)
index > i ?
preArr[i] = targetArray[i]
: postArr[i] = targetArray[i] // 가독성 말아먹고
}
// preArr.length; // 앞 배열의 길이가 나올것이다. 끝에다 추가한다. O(1)
preArr[preArr.length] = value;
const loofFunc = function (weight = 0) {
for (let j=0; j < postArr.length + weight; j++) { // O(n)
if (postArr[j + index] !== undefined) {
preArr[j + index + 1] = postArr[j + index]
}
}
}
// index 0 용
if (index === 0) {
loofFunc();
return preArr;
} else if(index <= 0) {
console.error('index에 음수넣지말자..')
return []
} else {
// 리턴용 새 배열
loofFunc(1);
return preArr;
}
}
// 삭제할 배열, 삭제할 인덱스 아까랑 비슷하겠지....
const removeAt = function (targetArray, removeIndex) {
console.log('나약한 .. 리무브엣을 동작합니다..')
// 리턴내용 그것이 삭제된 새 배열
let preArr = []; // 앞 배열
let postArr = []; // 뒷 배열
for (let i=0; i < targetArray.length; i++) { // 슬라이스 못쓰니까 열심히 잘라보자. O(n)
// filter 안쓰고 하려니까 매우 어렵구나...
if (removeIndex > i) {
preArr[i] = targetArray[i]
}
else if (removeIndex < i) {
postArr[i] = targetArray[i]
}
}
for (let point = removeIndex; point < postArr.length; point++) {
preArr[point] = postArr[point + 1]
}
preArr.length = preArr.length - 1
return preArr;
}
const insertArr = insertAt(arr, 8, 4);
const removeArr = removeAt(arr, 0);
console.log('=======0ㅅ0======\n', insertArr, removeArr);
1. Utility > terminal에서 해당 명령어를 복사하고 다시 한 번 삭제 작업을 진행합니다.
명령:
sudo kextunload /Library/Extensions/PRISM\ Live\ Studio\ SoundDriver.kext
2. 명령어 입력하여 삭제 후 Finder에서
/Library/Extensions/PRISM\ Live\ Studio\ SoundDriver.kext
목록을 찾아서 삭제합니다.