과제 README.MD https://github.com/devouring-algorithm-ds/algorithm-study-s2/tree/s2/week1/week1

 

devouring-algorithm-ds/algorithm-study-s2

기초 자료구조와 알고리즘 씹어먹기. Contribute to devouring-algorithm-ds/algorithm-study-s2 development by creating an account on GitHub.

github.com

### 개인
+ 배열의 내용을 공부하고 정리한다. 
  + 배열의 정의와 성질
    + 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);

?

 

'몰라그거무서운거 > 알고모르고' 카테고리의 다른 글

센트리 m3에서 self-hosted docker 로 띄우기  (0) 2024.06.28
Rust 해볼까.. RustRover  (1) 2024.03.10
week2 과제  (1) 2021.05.23
시, 공간 복잡도  (0) 2021.05.10

- 시간복잡도

얼마나 빨리 끝나느냐 - 작업을 위해서 책상에 판 벌려서 작업을 끝내는 시간

빅O 표기법으로 나타냄.

조용한 대회장에서 사람섞어놓고 샤우팅해서 이름 불러서 찾으면 O(1)

대회장에서 순차적으로 누가 누군지 물어서 찾으면 O(N), 즉시 찾으면 O(1)

대회장에서 가나다 순으로 쭉 서있으면 O(log N)

 

- 공간복잡도

얼마나 메모리를 많이 먹느냐 - 작업을 위해 책상에 판 벌리는데 얼마나 큰 책상님이 필요한가.

책상에도 가로 세로가 있듯 공간에도 고정공간과 가변공간이 있음.

* 메모리 제한이 512MB일 때 int 변수를 대략 1.2억개 정도 선언할 수 있다 정도 이해하면 된다고

ref - blog.encrypted.gg/922

'몰라그거무서운거 > 알고모르고' 카테고리의 다른 글

센트리 m3에서 self-hosted docker 로 띄우기  (0) 2024.06.28
Rust 해볼까.. RustRover  (1) 2024.03.10
week2 과제  (1) 2021.05.23
week 1 과제  (0) 2021.05.15

회사 내부 위키나, 개발문서 말고 외부에 잘 적는 사람들은 얼마나 많은 시간을 투자하는걸까.

...대단한사람들

 

'잡담' 카테고리의 다른 글

시니어가 아니더라도 기술을 공부하고 나누는 이유  (0) 2021.12.18
7월까지 잠깐 잠수  (0) 2021.05.31
2021.04.27 기록  (0) 2021.04.27
2021.04.20. 고민  (0) 2021.04.20
2021.04.04 기록  (0) 2021.04.04

설치 후 지웠는데 ...

mac 에서 midi 오디오 입력에 표시되어서 마이크보다 먼저 잡히게되는 문제가 있었음.

// sudo kextunload /Library/Extensions/PRISM\ Live\ Studio\ SoundDriver.kext

어??? .... 재부팅하니까 다시 살아나네 ㅠㅠㅠㅠㅠ

1. Utility > terminal에서 해당 명령어를 복사하고 다시 한 번 삭제 작업을 진행합니다.
명령: 

sudo kextunload /Library/Extensions/PRISM\ Live\ Studio\ SoundDriver.kext



2. 명령어 입력하여 삭제 후 Finder에서 

/Library/Extensions/PRISM\ Live\ Studio\ SoundDriver.kext
목록을 찾아서 삭제합니다.

고마워요 고객센터

쿠베를 공부 하다보니, 오픈위스크라는 친구에 대해 듣게되었다. 유명한 아파치 프로젝트!
간단하게 말하자면 문제가 발생했을 때, 콜백이벤트를 실행해주기 좋은 서버리스 아키텍쳐이다.

github.com/apache/openwhisk/

 

apache/openwhisk

Apache OpenWhisk is an open source serverless cloud platform - apache/openwhisk

github.com

 

개인적으로 볼 때는 단순하게 함수단위로 iot에서 대문열기, 간단하게 디비 레코드 변경, IoT 센서등 조작 등등 작은이벤트 용으로 쓰면 아주 좋을 것 같고, 이것저것 연결해서 복잡하게 만들면 헬게이트를 맛볼 것으로 추정된다.

MSA에 더 MAS한 맛이라 가능하면 테스트 코드가 없어도 될 진짜 작은 사이즈의 작업을 할 때 써보자.

어... 집에 대문에 열렸을 때, 누가 문을 조작했나 하고 센서를 달아 놓았다면

notify-api.line.me/

 

LINE Notify

LINE Notify allows you to send web notifications from GitHub, IFTTT, Mackerel, and more directly to your LINE chats.

notify-bot.line.me

라인으로 간단하게 CURL로 쏜다던가. 하는걸 만들면 되겠다.

누가 또 그럼

docs.aws.amazon.com/ko_kr/lambda/latest/dg/welcome.html

 

AWS Lambda란 무엇입니까? - AWS Lambda

AWS Lambda란 무엇입니까? AWS Lambda는 서버를 프로비저닝하거나 관리하지 않고도 코드를 실행할 수 있게 해주는 컴퓨팅 서비스입니다. Lambda는 필요 시에만 코드를 실행하며, 하루에 몇 개의 요청에

docs.aws.amazon.com

얘랑 어떤게 나은가 할텐데

ㅋㅋㅋ 난 모르겠다.

아래 글 참고할 것

stackshare.io/stackups/apache-openwhisk-vs-aws-lambda-vs-serverless#posts

 

Apache OpenWhisk vs AWS Lambda vs Serverless | What are the differences?

Apache OpenWhisk - The best open-source serverless cloud platform, enterprise ready and accessible to all developers.. AWS Lambda - Automatically run code in response to modifications to objects in Amazon S3 buckets, messages in Kinesis streams, or updates

stackshare.io

끝.

+ Recent posts