[인프런 워밍업 클럽_3기 CS] 1주차 자료구조와 알고리즘 미션
여러분은 교실의 학생 정보를 저장하고 열람할 수 있는 관리 프로그램을 개발하려고 합니다.
이 때 여러분이라면 학생의 정보를 저장하기 위한 자료구조를 어떤 걸 선택하실 건가요? 이유를 함께 적어주세요.
학생의 정보는 전학, 퇴학이 아니라면 자주 수정되는 것이 아니고, 자료의 참조가 빈번하게 사용될 것으로 예상되므로
삽입/삭제, 쓰기 성능에 큰 무게를 두지 않고 읽기 성능이 빠른 자료구조를 선택할 것이다.
우선, 인덱스를 참조하는 자료구조를 선택할텐데 연결리스트는 이에 해당하지 않고
배열 또는 해시 테이블을 선택할 것인데,
빈번하진 않더라도 일단 학생의 정보를 저장(삽입/삭제)하긴 해야 하기때문에
정보의 삽입 삭제 연산이 더 좋은 해시 테이블을 선택한다.
여러분은 고객의 주문을 받는 프로그램을 개발하려고 합니다. 주문은 들어온 순서대로 처리됩니다. 이 때 여러분이라면 어떤 자료구조를 선택하실 건가요? 이유를 함께 적어주세요.
선입선출 구조를 이야기하고 있다. 이는 Queue 구조를 말하고 있으므로 Queue 자료구조를 선택한다.
우리가 구현한 스택은 0번 인덱스, 즉 입구쪽으로 데이터가 삽입되고 나오는 구조입니다. 반대로 마지막 인덱스, 즉 출구쪽으로 데이터가 삽입되고 나오는 구조로 코드를 변경해주세요.
void push(data){
this.list.insertAt(this.list.count, data);
}
int pop(){
if(this.list.count == 0)
return null;
return this.list.deleteAt(this.list.count-1);
}
해시테이블의 성능은 해시 함수에 따라 달라집니다. 수업 시간에 등번호를 이용해 간단한 해시 함수를 만들어봤습니다. 이번엔 등번호가 아닌 이름을 이용해 데이터를 골고루 분산시키는 코드로 수정해주세요. 힌트: charCodeAt() 함수를 이용 예시: name1 = "이운재"; name1.charCodeAt(0); // 51060 이운재의 0번 인덱스 ‘이’의 유니코드 출력
int hashFunction(name){
int AsciiName = name.charCodeAt(0)
int result = AsciiName - 44032
return result % 588;
}
댓글을 작성해보세요.