그러게 바쁘다 겨울왔네
겨울이네
7월까지 잠깐 잠수
....
바뻐...
'잡담' 카테고리의 다른 글
2021년 회고 (처음으로 쓰는...) (0) | 2021.12.31 |
---|---|
시니어가 아니더라도 기술을 공부하고 나누는 이유 (0) | 2021.12.18 |
2021.05.07 메모 (0) | 2021.05.07 |
2021.04.27 기록 (0) | 2021.04.27 |
2021.04.20. 고민 (0) | 2021.04.20 |
week2 과제
link : https://github.com/devouring-algorithm-ds/algorithm-study-s2/tree/s2/week2/week2
냠냠 -_-;...
+ 연결리스트의 내용을 공부하고 정리한다.
+ 연결리스트의 정의와 성질
+ 연결 리스트의 종류
+ 단일 연결 리스트 (Singly Linked List)
+ 이중 연결 리스트 (Doubly Linked List)
+ 원형 연결 리스트 (Circular Linked List)
+ 배열과 연결리스트의 차이
+ 1) 임의 위치에 있는 원소에 접근 = `O(N)`
> 찾으러 가는것에 한세월...
+ 2) 임의 위치에 있는 원소를 변경 = `O(1)`
> 변경은 빠름.
+ 3) 원소를 끝에 추가 = `O(1)`
> 끝에 있는 것 추가라
+ 4) 마지막 원소 제거 = `O(1)`
> 끝에 있는 건 빠르지
+ 5) 임의 위치에 원소 추가 = `O(n)`
+ 6) 임의 위치에 원소 제거 = `O(n)`
+ 이중 원형 (Doubly Circular) 연결리스트를 기반으로 기능 구현
+ 1) 임의 위치에 원소 추가: `insertAt(...)`
+ 2) 임의 위치의 원소 제거: `removeAt(...)`
+ 연결리스트 관련 문제를 Leetcode에서 풀고 github에 공유한다.
+ 파트너 조원의 코드를 리뷰한다.
+ 본인의 피드백을 확인하고 수정하여 github에 올린다.
'몰라그거무서운거 > 알고모르고' 카테고리의 다른 글
Rust 해볼까.. RustRover (1) | 2024.03.10 |
---|---|
week 1 과제 (0) | 2021.05.15 |
시, 공간 복잡도 (0) | 2021.05.10 |
고민중... orm 뭐하지?
week 1 과제
과제 README.MD https://github.com/devouring-algorithm-ds/algorithm-study-s2/tree/s2/week1/week1
### 개인
+ 배열의 내용을 공부하고 정리한다.
+ 배열의 정의와 성질
+ 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);
?
'몰라그거무서운거 > 알고모르고' 카테고리의 다른 글
Rust 해볼까.. RustRover (1) | 2024.03.10 |
---|---|
week2 과제 (1) | 2021.05.23 |
시, 공간 복잡도 (0) | 2021.05.10 |