1.쉬움
정렬된 배열에서 이진 탐색(binary search)의 시간 복잡도는 무엇입니까?
- AO(log n)
- BO(n log n)
- CO(1)
- DO(n)
2.쉬움
메모이제이션(memoisation)이란 무엇입니까?
- A함수 호출 결과를 저장하여 반복 호출에 메모리에서 답하는 것
- B코드의 각 줄 옆에 주석을 쓰는 것
- C함수가 반환된 뒤 메모리를 해제하는 것
- D재귀를 동등한 루프로 자동 변환하여 호출 스택이 필요 없게 만드는 것
3.쉬움
피벗을 골라 배열을 더 작은 원소와 더 큰 원소로 분할하는 정렬 알고리즘은 무엇입니까?
- A삽입 정렬
- B퀵 정렬
- C버블 정렬
- D병합 정렬
4.보통
점화식 T(n) = 2T(n/2) + O(1)의 해는 무엇입니까?
- AO(n log n)
- BO(log n)
- CO(n)
- DO(n²)
5.보통
원소가 1,000,000개인 정렬된 배열에서 이진 탐색은 최악의 경우 대략 몇 번 비교합니까?
- A약 100
- B약 500,000
- C약 1,000
- D약 20
6.보통
가득 차면 용량을 두 배로 늘리는 동적 배열에 원소를 추가하는 연산의 분할 상환(amortised) 시간 복잡도는 무엇입니까?
- AO(1)
- BO(n)
- CO(log n)
- DO(n²)
7.어려움
결정 문제 X가 NP-complete임을 증명하려면 어떤 두 가지를 보여야 합니까?
- AX가 P에 속하는 문제로 환원되고, X가 NP에 속한다
- BX가 NP에 속하고, 알려진 NP-complete 문제가 다항 시간에 X로 환원된다
- CX가 P에 속하고, X가 SAT로 환원된다
- DX에 다항 알고리즘이 없고, X가 결정 가능하다
8.어려움
해시 테이블의 평균 조회 시간은 O(1)인데 최악의 경우는 O(n)인 이유는 무엇입니까?
- A많은 키가 같은 버킷에서 충돌(collision)할 수 있기 때문이다
- B해시 함수가 느리기 때문이다
- C배열 접근이 O(n)이기 때문이다
- D키를 먼저 정렬해야 하기 때문이다
정답표
- 1. A · O(log n)
- 2. A · 함수 호출 결과를 저장하여 반복 호출에 메모리에서 답하는 것
- 3. B · 퀵 정렬
- 4. C · O(n)
- 5. D · 약 20
- 6. A · O(1)
- 7. B · X가 NP에 속하고, 알려진 NP-complete 문제가 다항 시간에 X로 환원된다
- 8. A · 많은 키가 같은 버킷에서 충돌(collision)할 수 있기 때문이다
자세한 단계별 풀이: examproblems.com에서 이 주제를 연습하세요.