자료 구조와 알고리즘

해시 테이블의 충돌을 처리하는 방법으로 체이닝(같은 위치의 원소를 연결 리스트로 잇는다)과 개방 주소법(표 안의 비어 있는 다른 위치를 찾는다)을 비교한 설명으로 올바른 것은? 적재율은 저장한 원소 수를 표의 크기로 나눈 값으로 한다.

  1. A체이닝에서는 적재율이 1을 넘어도 저장할 수 있지만, 개방 주소법에서는 표의 크기를 넘어 저장할 수 없고, 적재율이 1에 가까워지면 탐색 횟수가 급격히 늘어난다
  2. B개방 주소법에서는 충돌이 일어나지 않으므로, 적재율과 관계없이 탐색은 1회로 끝난다
  3. C체이닝에서는 적재율이 아무리 높아져도 탐색의 수고는 변하지 않는다
정답과 해설 보기

정답: A. 체이닝에서는 적재율이 1을 넘어도 저장할 수 있지만, 개방 주소법에서는 표의 크기를 넘어 저장할 수 없고, 적재율이 1에 가까워지면 탐색 횟수가 급격히 늘어난다

체이닝은 같은 위치의 원소를 리스트로 이으므로 원소 수가 표의 크기를 넘어도 저장할 수 있지만, 리스트의 평균 길이는 적재율에 비례하여 늘어나고 탐색의 수고도 늘어납니다. 개방 주소법은 표 안에만 저장하므로 원소 수는 표의 크기까지이며, 적재율이 1에 가까워지면 빈자리를 찾는 횟수가 급격히 늘어납니다. 어느 방법이든 적재율이 정해 둔 값(예를 들어 0.5~0.75 정도)을 넘으면 표를 키워서 모든 원소를 다시 넣는(재해싱) 것이 보통입니다. 개방 주소법에서도 충돌은 일어나며, 빈 위치를 찾는 것으로 대처하고 있습니다.

이 분야 연습하기 분야로 돌아가기

자료 구조와 알고리즘의 다른 문제

  1. 배열 가운데의 원소와 비교하여 찾는 범위를 절반씩 좁혀 가는 이진 탐색을 사용하기 위한 전제 조건으로 올바른 것은?
  2. 오름차순으로 정렬된 서로 다른 1,000개의 값에서 이진 탐색으로 값을 찾는다. 1회의 비교로 '일치·더 작다·더 크다'를 알 수 있다고 하면, 찾는 경우와 찾지 못하는 경우를 모두 포함하여 비교 횟수는 최대 몇 회인가?
  3. 오름차순으로 늘어선 배열 a[0]~a[9] = 3, 8, 12, 17, 23, 31, 38, 45, 52, 60에서 이진 탐색으로 38을 찾는다. 찾는 범위를 하한 lo = 0, 상한 hi = 9에서 시작하고, 가운데 위치를 (lo + hi) ÷ 2의 버림으로 한다. 38과 비교되는 원소의 값을 차례로 나열한 것은?
  4. 배열 5, 3, 8, 1, 4를 버블 정렬로 오름차순 정렬한다. 앞에서부터 이웃한 원소끼리 비교하여 왼쪽이 더 크면 교환하는 조작을 끝까지 1회 수행한(1패스) 후의 배열은?
  5. 배열 29, 10, 14, 37, 13을 선택 정렬(정렬되지 않은 부분에서 최솟값을 찾아, 정렬되지 않은 부분의 맨 앞과 교환한다)로 오름차순 정렬한다. 이 조작을 2회 수행한 후의 배열은?