[1주차] 인프런 워밍업 클럽 스터디 3기 - CS전공지식, 자료구조와 알고리즘 미션
9개월 전
1. 학생 정보 저장을 위한 자료구조 선택
자료구조: 해시맵(Map)
이유:
학생의 정보를 학번 또는 이름을 키(key)로 저장하면 빠르게 조회할 수 있음.
검색, 추가, 삭제가 O(1)에 가까운 시간복잡도를 가짐.
배열(Array)도 가능하지만, 특정 학생을 찾기 위해 전체 배열을 탐색해야 할 수도 있어 비효율적임.
2. 주문을 받는 프로그램을 위한 자료구조 선택
자료구조: 큐(Queue)
이유:
주문이 들어온 순서대로 처리되어야 하므로 FIFO(First In First Out) 방식이 적절함.
JavaScript에서는
Array.push()로 삽입,Array.shift()로 삭제하면 큐처럼 동작할 수 있음.효율적인 큐를 구현하려면
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("손흥민"));
댓글을 작성해보세요.