1.쉬움
그래프는 무엇으로 구성됩니까?
- A키와 해시값만
- B행과 열
- C간선(edge)으로 연결된 정점(vertex, 노드)
- D루트와 리프만
2.쉬움
트리에서 노드의 깊이(depth)란 무엇입니까?
- A루트에서 그 노드까지의 간선 수
- B그 노드에서 가장 깊은 리프까지의 간선 수
- C그 서브트리의 노드 수
- D그 노드의 자식 수
3.쉬움
이중 연결 리스트의 각 노드에는 무엇이 들어 있습니까?
- A데이터와 다음 노드에 대한 포인터만
- B데이터, 다음 노드에 대한 포인터, 이전 노드에 대한 포인터
- C데이터 사본 두 개와 포인터 하나
- D데이터와 포인터 두 개로, 하나는 다음 노드를, 다른 하나는 그 다음 다음 노드를 가리킨다
4.보통
정점이 V개인 그래프의 인접 행렬은 얼마만큼의 메모리를 사용합니까?
- AO(E)
- BO(log V)
- CO(V + E)
- DO(V²)
5.보통
어떤 애플리케이션은 빠른 조회가 필요하고, 키를 정렬된 순서로 나열하고 범위 질의에도 답해야 합니다. 가장 적합한 구조는 무엇입니까?
- A스택
- B정렬되지 않은 연결 리스트
- C해시 테이블
- D균형 이진 탐색 트리
6.보통
원소가 n개인 배열의 중간에 원소를 삽입하는 비용은 얼마입니까?
- A뒤의 원소들을 이동시켜야 하므로 O(n)
- B인덱스를 알고 있으므로 O(1)
- C각 원소가 n번 이동하므로 O(n²)
- D이진 탐색 때문에 O(log n)
7.어려움
어떤 객체를 해시 맵의 키로 저장한 뒤, 그 해시 함수가 사용하는 필드를 바꿉니다. 예상되는 결과는 무엇입니까?
- A필드가 바뀌는 순간 맵이 오류를 던진다
- B키의 해시는 프로그램이 시작될 때 한 번만 계산되므로 아무것도 바뀌지 않는다
- C맵이 자동으로 키를 새 버킷으로 옮긴다
- D객체가 이전 해시의 버킷에 있으므로 조회가 실패할 수 있다
8.어려움
서버가 해시 함수를 범용(universal) 해시 함수족에서 무작위로 고르는 이유는 무엇일 수 있습니까?
- A공격자가 모두 충돌하는 키를 많이 고를 가능성을 매우 낮추기 위해
- B해시 테이블을 정렬된 상태로 만들기 위해
- C공격자가 어떤 키를 보내더라도 어떤 두 키도 결코 충돌하지 않도록 보장하기 위해
- D테이블 크기 조정의 필요를 없애기 위해
정답표
- 1. C · 간선(edge)으로 연결된 정점(vertex, 노드)
- 2. A · 루트에서 그 노드까지의 간선 수
- 3. B · 데이터, 다음 노드에 대한 포인터, 이전 노드에 대한 포인터
- 4. D · O(V²)
- 5. D · 균형 이진 탐색 트리
- 6. A · 뒤의 원소들을 이동시켜야 하므로 O(n)
- 7. D · 객체가 이전 해시의 버킷에 있으므로 조회가 실패할 수 있다
- 8. A · 공격자가 모두 충돌하는 키를 많이 고를 가능성을 매우 낮추기 위해
자세한 단계별 풀이: examproblems.com에서 이 주제를 연습하세요.