inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

워밍업 클럽 2주차 발자국🐾

geyun6026
1

그림으로 쉽게 배우는 자료구조와 알고리즘

재귀(recursion) : 어떠한 것을 정의할 때 자기 자신을 참조하는 것


콜스택


재귀함수 예시 : 팩토리얼 함수

function factorial(number){
    if(number == 1 || number == 0){
        return 1;
    } else{
        return number * factorial(number - 1);
    }
}

(이게 어떻게 구현이 가능한 것인지 완벽히 이해되지는 않지만, 이렇게 간단히 표현 할 수 있다는 것이 놀랍다.)


재귀적으로 생각하기

function sumArray(arr){
    if(arr.length == 1) return arr[0];
    return sumArray(arr.slice(0, -1)) + arr[arr.length -1];
}
function strLength(arr){
    if(arr[0] == null) return 0;
    return strLength(arr.slice(0, -1)) + 1;
}
function power(x, n){
    if(n == 0) return 1;
    retrun power(x, n-1) * x;
}

하노이 탑

function hanoi(count, from, to, temp){
    if(count == 0) return;
    hanoi(count - 1, from, temp, to);
    console.log({"원반 ${count}를 ${from}에서 ${to}로 이동");
    hanoi(count -1, temp, to, from);
}

hanoi(3, "A", "C", "B");

 


정렬 - 버블 정렬(Bubble Sort)

function BubbleSort(arr){
    for(let i = 0; i < arr.length - 1; i++){
        for(let j = 0; j < (arr.length - i - 1); j++){
            if(arr[j] > arr[j + 1]){
                let temp = arr[j];
                arr[j] = arr[j + 1];
                arr[j + 1] = temp;
            }
        }
    }
}

 정렬 - 선택 정렬(Selection Sort)

function SelectionSort(arr){
    for(let i = 0; i < arr.length - 1; i++){
        let minValueIndex = i;

        for(let j = i + 1; i < arr.length; j++){
            if(arr[j] < arr[minValueIndex]){
                minValueIndex = j;
            }
        }

        let temp = arr[i];
        arr[i] = arr[minValueIndex];
        arr[minValueIndex] = temp;
    }
}
 


그림으로 쉽게 배우는 운영체제

CPU 스케줄링


 프로세스 동기화

 프로세스 간 통신의 종류

공유자원과 임계구역

세마포어(상호베제 메커니즘의 한 가지)

모니터

교착상태 해결 방법


메모리

메모리 종류

 

메모리와 주소

 메모리 = 메인메모리(RAM)

메모리 할당 방식

 

알고리즘 · 자료구조 워밍업 알고리즘 자료구조 운영체제 감자

답변 0