[1주차] 인프런 워밍업 클럽 스터디 3기 - CS전공지식, 자료구조와 알고리즘 미션

[1주차] 인프런 워밍업 클럽 스터디 3기 - CS전공지식, 자료구조와 알고리즘 미션

1. 학생 정보 저장을 위한 자료구조 선택

자료구조: 해시맵(Map)

이유:

  1. 학생의 정보를 학번 또는 이름을 키(key)로 저장하면 빠르게 조회할 수 있음.

  2. 검색, 추가, 삭제가 O(1)에 가까운 시간복잡도를 가짐.

  3. 배열(Array)도 가능하지만, 특정 학생을 찾기 위해 전체 배열을 탐색해야 할 수도 있어 비효율적임.

2. 주문을 받는 프로그램을 위한 자료구조 선택

자료구조: 큐(Queue)

이유:

  1. 주문이 들어온 순서대로 처리되어야 하므로 FIFO(First In First Out) 방식이 적절함.

  2. JavaScript에서는 Array.push()로 삽입, Array.shift()로 삭제하면 큐처럼 동작할 수 있음.

  3. 효율적인 큐를 구현하려면 LinkedList를 사용할 수도 있음.

3. 스택의 입구/출구 방향 변경

기존 코드가 0번 인덱스를 입구로 사용하는 구조일 경우, 마지막 인덱스를 입구로 변경해야 함.

class Stack {
    constructor() {
        this.stack = [];
    }

    push(value) {
        this.stack.push(value);
    }

    pop() {
        return this.stack.pop();
    }

    peek() {
        return this.stack[this.stack.length - 1];
    }

    isEmpty() {
        return this.stack.length === 0;
    }
}

//결과
const stack = new Stack();
stack.push(1);
stack.push(2);
console.log(stack.pop()); // 2
console.log(stack.pop()); // 1

4. 이름을 이용한 해시 함수 구현

등번호 대신 이름의 유니코드 값을 합산하여 해시값을 생성하도록 수정.

hashFunction(name) {
    let hash = 0;
    for (let i = 0; i < name.length; i++) {
        hash += name.charCodeAt(i);
    }
    return hash % 100;
}

// 결과
console.log(hashFunction("이운재"));
console.log(hashFunction("박지성"));
console.log(hashFunction("손흥민"));

댓글을 작성해보세요.

채널톡 아이콘