![[인프런 워밍업 클럽_3기 CS] 1주차 자료구조와 알고리즘 미션 🐾](https://cdn.inflearn.com/public/files/blogs/4da9f2e0-7db6-400b-a0cb-841298dedf8f/336224.png)
[인프런 워밍업 클럽_3기 CS] 1주차 자료구조와 알고리즘 미션 🐾
1개월 전
자료구조와 알고리즘
1. 여러분은 교실의 학생 정보를 저장하고 열람할 수 있는 관리 프로그램을 개발하려고 합니다.
이 때 여러분이라면 학생의 정보를 저장하기 위한 자료구조를 어떤 걸 선택하실 건가요?
이유를 함께 적어주세요.
해시테이블을 사용할 것이다. 학생의 정보 검색에 있어 O(1)의 성능을 제공하여 효율적이다.
2. 여러분은 고객의 주문을 받는 프로그램을 개발하려고 합니다.
주문은 들어온 순서대로 처리됩니다.
이 때 여러분이라면 어떤 자료구조를 선택하실 건가요?
이유를 함께 적어주세요.
Queue(큐)를 사용할 것이다. 주문은 FIFO 방식으로 처리 되어야하기에 Queue가 적합하다.
3. 우리가 구현한 스택은 0번 인덱스, 즉 입구쪽으로 데이터가 삽입되고 나오는 구조입니다.
반대로 마지막 인덱스, 즉 출구쪽으로 데이터가 삽입되고 나오는 구조로 코드를 변경해주세요.
class Stack {
constructor() {
this.list = new LinkedList();
}
push(data) {
this.list.insertAt(this.list.count, data);
}
pop() {
try {
return this.list.deleteAt(this.list.count - 1);
} catch (e) {
return null;
}
}
peek() {
return this.list.getNodeAt(this.list.count - 1);
}
isEmpty() {
return this.list.count === 0;
}
}
4. 해시테이블의 성능은 해시 함수에 따라 달라집니다.
수업 시간에 등번호를 이용해 간단한 해시 함수를 만들어봤습니다.
이번엔 등번호가 아닌 이름을 이용해 데이터를 골고루 분산시키는 코드로 수정해주세요.
힌트: charCodeAt() 함수를 이용
예시: name1 = "이운재";
name1.charCodeAt(0); // 51060 이운재의 0번 인덱스 ‘이’의 유니코드 출력
hashFunction(name) {
return name.charCodeAt(0) % 10;
}
댓글을 작성해보세요.