[인프런 워밍업 클럽 3기] CS - 1주차 미션 (자료구조와 알고리즘)
여러분은 교실의 학생 정보를 저장하고 열람할 수 있는 관리 프로그램을 개발하려고 합니다.이 때 여러분이라면 학생의 정보를 저장하기 위한 자료구조를 어떤 걸 선택하실 건가요? 이유를 함께 적어주세요.해시테이블을 사용해시 테이블은 Key Value로 구성되며, Key 값을 고유해야함교실의 학생들을 구별할 수 있는 고유한 정보가 존재하기 때문에, (예를 들면 학번)Key를 학번으로 하며, 학생 정보를 Value에 저장하면 됨이렇게 되면 고유한 값을 통해서 학생 정보를 쉽게 찾을 수 있을 것 여러분은 고객의 주문을 받는 프로그램을 개발하려고 합니다. 주문은 들어온 순서대로 처리됩니다. 이 때 여러분이라면 어떤 자료구조를 선택하실 건가요? 이유를 함께 적어주세요.큐 Queue 를 사용고객이 주문한 순서대로 처리되어야 하므로, FIFO를 만족하는 자료구조인 큐를 사용 우리가 구현한 스택은 0번 인덱스, 즉 입구쪽으로 데이터가 삽입되고 나오는 구조입니다. 반대로 마지막 인덱스, 즉 출구쪽으로 데이터가 삽입되고 나오는 구조로 코드를 변경해주세요.import 한 LinkedList 의 프로퍼티에는 원소의 개수를 나타내는 count가 있다고 가정import { LinkedList } from "./linked.list.ts"; class Stack { list; 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); } } export { Stack }; 해시테이블의 성능은 해시 함수에 따라 달라집니다. 수업 시간에 등번호를 이용해 간단한 해시 함수를 만들어봤습니다. 이번엔 등번호가 아닌 이름을 이용해 데이터를 골고루 분산시키는 코드로 수정해주세요. ( 힌트: charCodeAt() 함수를 이용 예시: name1 = "이운재"; name1.charCodeAt(0); // 51060 이운재의 0번 인덱스 ‘이’의 유니코드 출력)hashFunction(str) { let hash = 0; for (let i = 0; i < str.length; i++) { hash += str.charCodeAt(i); } return hash % 10; } 각 문자의 Unicode 값 더한 뒤, 테이블 크기로 나눈 나머지를 사용할 수 있음.하지만, 이름이 같거나, 구성이 같은 경우(이운재, 이재운)에는 충돌이 발생할 수 있으므로 추가적인 처리가 필요해보임