1.쉬움
스택의 맨 위에 원소를 추가하는 연산의 이름은 무엇입니까?
- APush
- BPop
- CEnqueue
- DPeek
2.쉬움
배열의 원소는 메모리에 어떻게 저장됩니까?
- A흩어져 있고 포인터로 연결되어
- B하나의 연속된 블록에 차례대로
- C해시가 고른 임의의 위치에
- D메모리 페이지의 트리에
3.쉬움
이진 트리의 전위 순회(preorder)는 노드를 어떤 순서로 방문합니까?
- A위에서부터 레벨별로
- B왼쪽 서브트리, 노드, 오른쪽 서브트리
- C노드, 왼쪽 서브트리, 오른쪽 서브트리
- D왼쪽 서브트리, 오른쪽 서브트리, 노드
4.보통
충돌한 키들을 같은 버킷의 리스트에 저장하는 충돌 해결 방법은 무엇입니까?
- A이차 탐사(Quadratic probing)
- B분리 체이닝(Separate chaining)
- C이중 해싱(Double hashing)
- D선형 탐사(Linear probing)
5.보통
어떤 애플리케이션은 빠른 조회가 필요하고, 키를 정렬된 순서로 나열하고 범위 질의에도 답해야 합니다. 가장 적합한 구조는 무엇입니까?
- A정렬되지 않은 연결 리스트
- B해시 테이블
- C스택
- D균형 이진 탐색 트리
6.보통
적재율이 임계값을 넘은 뒤 해시 테이블이 재해싱(rehash)하면 무슨 일이 일어납니까?
- A충돌한 키만 테이블 끝의 새 오버플로 리스트로 옮긴다
- B더 큰 테이블을 할당하고 모든 키를 다시 삽입한다
- C기존 키를 제자리에서 정렬한다
- D자리를 만들기 위해 가장 오래된 키를 삭제한다
7.어려움
기수 트리(radix tree, 압축 트라이)는 일반 트라이를 어떻게 개선합니까?
- A각 노드의 자식을 빈도순으로 정렬한다
- B각 단어를 개별 노드가 아니라 루트의 해시 테이블에 저장한다
- C각 단어의 첫 글자만 유지한다
- D자식이 하나인 노드들의 사슬을 문자열로 레이블된 간선 하나로 합친다
8.어려움
데이터베이스와 파일 시스템에서 B-트리를 사용하는 이유는 무엇입니까?
- A재균형이 필요 없기 때문이다
- B높은 분기 계수로 트리를 얕게 유지하여 느린 디스크 읽기를 줄이기 때문이다
- C데이터를 정렬하지 않고 저장하기 때문이다
- D어떤 배열보다도 메모리를 적게 써서 전체 인덱스가 항상 주기억장치에 들어가기 때문이다
정답표
- 1. A · Push
- 2. B · 하나의 연속된 블록에 차례대로
- 3. C · 노드, 왼쪽 서브트리, 오른쪽 서브트리
- 4. B · 분리 체이닝(Separate chaining)
- 5. D · 균형 이진 탐색 트리
- 6. B · 더 큰 테이블을 할당하고 모든 키를 다시 삽입한다
- 7. D · 자식이 하나인 노드들의 사슬을 문자열로 레이블된 간선 하나로 합친다
- 8. B · 높은 분기 계수로 트리를 얕게 유지하여 느린 디스크 읽기를 줄이기 때문이다
자세한 단계별 풀이: examproblems.com에서 이 주제를 연습하세요.