티스토리 간만에... 2024.03.10

다운완료~실행.

정식버전 언제나오려나..

 

근데 나 러스트? 설치 안했는데...

아..?

Install Rustup 누르니, 알아서 설치해준다.

아는게 없으니.. 알아서 잘해주겠지

대충 저기 설치된거같고...

프론트도 러스트로 할 수 있단건지... 잘 모르겠네.. 당연히 안될거같..

백엔드 합한 모노레포 말하는걸까. 나중에 만들어봐야겠어.

 

러스트를 주피터 노트북에 사용해서 간단하게 돌려볼 수 있고.

https://pipln.medium.com/rust-%EB%A5%BC-jupyter-notebook-%EC%82%AC%EC%9A%A9%ED%95%98%EA%B8%B0-cd939324e23f

 

Rust를 Jupyter Notebook에서 사용

0. 사전 준비

pipln.medium.com

참고하길.

 

RustRover-EAP 는 젯브레인 새 인터페이스가 기본인가보다.

기본으로 깃 세팅도 해두나보네...

대충... src/main.rs 하나있고,

fn은 함수겠거니.

우측상단 초록 화살표나 눌러서 헬로 월드나 찍어보면...

잘되네.

이제 뭐해본다...(?)

..

터미널에 보니 rustup 이랑 cargo 가 추가된거같네

주피터나 설치하자.

에러나네...

버전이 높아서?

https://github.com/evcxr/evcxr/blob/main/evcxr_repl/README.md

리드미나 읽고..

저기 블로그 글과 명령어가 좀 다르지?

cargo install --locked evcxr_repl

--locked 가 붙었는데... 

설치가 되네?

다시 저 블로그 글 가서 따라하고...

...? conda 가 없네...

https://www.anaconda.com/download

드가서 설치...

아... 뭐가 설치하고나니 뭐가 ... (뭐가 많아)

다 꺼

conda create --name evcxr
conda activate evcxr
conda install jupyter
conda install -y -c conda-forge nb_conda_kernels
cargo install evcxr_jupyter
evcxr_jupyter --install
jupyter notebook

귀찮다고 ...걍 여기서 붙여넣으면?

중간중간에 y 눌러줘야한다.

뭐야 되네?

... 

이제 기본 문법이나 익혀볼까.

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

week2 과제  (1) 2021.05.23
week 1 과제  (0) 2021.05.15
시, 공간 복잡도  (0) 2021.05.10

link : https://github.com/devouring-algorithm-ds/algorithm-study-s2/tree/s2/week2/week2

 

devouring-algorithm-ds/algorithm-study-s2

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

github.com

 

냠냠 -_-;... 

+ 연결리스트의 내용을 공부하고 정리한다. 
  + 연결리스트의 정의와 성질
  + 연결 리스트의 종류
    + 단일 연결 리스트 (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

과제 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);

?

 

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

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

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

Rust 해볼까.. RustRover  (1) 2024.03.10
week2 과제  (1) 2021.05.23
week 1 과제  (0) 2021.05.15

+ Recent posts