🔥딱 8일간! 인프런x토스x허먼밀러 역대급 혜택

인프런 워밍업 클럽 CS - 1주차 자료구조와 알고리즘 미션

인프런 워밍업 클럽 CS - 1주차 자료구조와 알고리즘 미션

자료구조와 알고리즘

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

     

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

해시테이블

이유는 해시테이블를 사용하면 학생의 정보를 빠르게 검색할 수 있기 때문입니다.

배열을 사용하면 특정 학생을 찾을 때 최악의 경우 O(n) 시간이 걸리지만

해시테이블은 학생 번호를 해시함수로 계산하여 얻은 인덱스로 O(1) 의 속도로 접근할 수 있습니다.

 

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

큐는 먼저 들어온 데이터를 먼저 처리하는 FIFO 방식의 자료구조입니다.

주문이 들어온 순서대로 처리하는 상황에서는 큐가 적합합니다.

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

     

     

    // 마지막 인덱스에 데이터 삽입
    push(data) {
      this.list.insertLast(data);
    }
    
    // 마지막 인덱스 삭제
    pop() {
      try {
        return this.list.deleteLast();
      } catch (e) {
        return null;
      }
    }

 

  1. 해시테이블의 성능은 해시 함수에 따라 달라집니다. 수업 시간에 등번호를 이용해 간단한 해시 함수를 만들어봤습니다. 이번엔 등번호가 아닌 이름을 이용해 데이터를 골고루 분산시키는 코드로 수정해주세요. 힌트: charCodeAt() 함수를 이용 예시: name1 = "이운재"; name1.charCodeAt(0); // 51060 이운재의 0번 인덱스 ‘이’의 유니코드 출력

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

댓글을 작성해보세요.

채널톡 아이콘