1.쉬움
문제가 보통 다루기 쉽다(tractable)고 불리는 것은 언제입니까?
- A상수 시간에 풀 수 있을 때
- B해가 없을 때
- C다항 시간에 풀 수 있을 때
- D모든 가능성을 시도해야만 풀 수 있을 때
2.쉬움
이미 정렬된 배열에서 삽입 정렬의 최선의 경우 시간 복잡도는 무엇입니까?
- AO(n log n)
- BO(1)
- CO(n)
- DO(n²)
3.쉬움
메모이제이션(memoisation)이란 무엇입니까?
- A함수가 반환된 뒤 메모리를 해제하는 것
- B재귀를 동등한 루프로 자동 변환하여 호출 스택이 필요 없게 만드는 것
- C함수 호출 결과를 저장하여 반복 호출에 메모리에서 답하는 것
- D코드의 각 줄 옆에 주석을 쓰는 것
4.보통
도달 가능한 기저 사례가 없는 재귀 함수에 대한 진술 중 옳은 것은 무엇입니까?
- AO(1) 시간에 실행된다
- B컴파일러가 항상 안전하게 끝나는 루프로 바꾼다
- C호출 스택이 넘칠 때까지 계속 자신을 호출한다
- D자동으로 0을 반환한다
5.보통
정렬된 배열에서 양 끝에서 포인터를 하나씩 안쪽으로 움직이며 합이 목표값인 두 원소를 찾습니다. 시간 복잡도는 무엇입니까?
- AO(n²)
- BO(n)
- CO(n log n)
- DO(log n)
6.보통
활동 선택 문제에서 겹치지 않는 활동의 수를 항상 최대로 만드는 탐욕적 규칙은 무엇입니까?
- A가장 일찍 시작하는 활동을 고른다
- B겹침이 가장 적은 활동을 먼저 고른 뒤, 호환되는 활동들로 반복한다
- C가장 일찍 끝나는 활동을 고르고, 호환되는 활동들로 반복한다
- D가장 짧은 활동을 먼저 고른다
7.어려움
마스터 정리를 사용하면 T(n) = 8T(n/2) + O(n²)의 해는 무엇입니까?
- AΘ(n log n)
- BΘ(n³)
- CΘ(n²)
- DΘ(n² log n)
8.어려움
정지 문제(halting problem)가 보여 주는 것은 무엇입니까?
- A일부 프로그램은 더 빠른 컴퓨터에서 더 빨리 실행되므로 정지 여부는 하드웨어에 달려 있다
- B루프는 피해야 한다
- C모든 프로그램은 결국 정지한다
- D모든 프로그램과 입력에 대해 그것이 정지하는지를 판정할 수 있는 알고리즘은 없다
정답표
- 1. C · 다항 시간에 풀 수 있을 때
- 2. C · O(n)
- 3. C · 함수 호출 결과를 저장하여 반복 호출에 메모리에서 답하는 것
- 4. C · 호출 스택이 넘칠 때까지 계속 자신을 호출한다
- 5. B · O(n)
- 6. C · 가장 일찍 끝나는 활동을 고르고, 호환되는 활동들로 반복한다
- 7. B · Θ(n³)
- 8. D · 모든 프로그램과 입력에 대해 그것이 정지하는지를 판정할 수 있는 알고리즘은 없다
자세한 단계별 풀이: examproblems.com에서 이 주제를 연습하세요.