[워밍업 클럽 3기] CS 1주차 - 자료구조와 알고리즘 미션

[워밍업 클럽 3기] CS 1주차 - 자료구조와 알고리즘 미션

  1. 여러분은 교실의 학생 정보를 저장하고 열람할 수 있는 관리 프로그램을 개발하려고 합니다.


    이때 여러분이라면 학생의 정보를 저장하기 위한 자료구조를 어떤 걸 선택하실 건가요? 이유를 함께 적어주세요.

  • HashMap

  • 일반적으로 학생 정보를 관리할 때는 '학번(아이디), 이름' 으로 관리하기 때문에, key는 학번, value는 이름을 저장하는 key-value 형식의 해쉬맵을 사용

  • 학번(key)으로 빠르게 조회가 가능. 수정/삭제 시에도 학번으로 조회하여 데이터 처리를 하면 되기 때문에 효율 적일 것

 

  1. 여러분은 고객의 주문을 받는 프로그램을 개발하려고 합니다. 주문은 들어온 순서대로 처리됩니다. 이때 여러분이라면 어떤 자료구조를 선택하실 건가요? 이유를 함께 적어주세요.

     

  • 큐(Queue)

  • 주문은 들어온 순서대로 처리되기 때문에 큐의 선입선출(FIFO) 구조와 일치

     

     

  1. 우리가 구현한 스택은 0번 인덱스, 즉 입구쪽으로 데이터가 삽입되고 나오는 구조입니다. 반대로 마지막 인덱스, 즉 출구쪽으로 데이터가 삽입되고 나오는 구조로 코드를 변경해주세요.

class Stack {
    constructor() {
        this.list = new LinkedList();
    }

    push(data) {
        this.list.insertLast(data);
    }

    pop() {
        try {
            return this.list.deleteLast();
        } catch (e) {
            return null;
        }
    }
}

 

  1. 해시테이블의 성능은 해시 함수에 따라 달라집니다. 수업 시간에 등번호를 이용해 간단한 해시 함수를 만들어봤습니다. 이번엔 등번호가 아닌 이름을 이용해 데이터를 골고루 분산시키는 코드로 수정해주세요.

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

댓글을 작성해보세요.

채널톡 아이콘