1.쉬움
문제가 보통 다루기 쉽다(tractable)고 불리는 것은 언제입니까?
- A해가 없을 때
- B모든 가능성을 시도해야만 풀 수 있을 때
- C상수 시간에 풀 수 있을 때
- D다항 시간에 풀 수 있을 때
2.쉬움
병합 정렬의 최악의 경우 시간 복잡도는 무엇입니까?
- AO(n log n)
- BO(log n)
- CO(n)
- DO(n²)
3.쉬움
O(2ⁿ) 증가를 무엇이라고 합니까?
- A다항
- B지수
- C선형
- D로그
4.보통
정렬된 배열에서 양 끝에서 포인터를 하나씩 안쪽으로 움직이며 합이 목표값인 두 원소를 찾습니다. 시간 복잡도는 무엇입니까?
- AO(n²)
- BO(log n)
- CO(n)
- DO(n log n)
5.보통
문제가 최적 부분 구조를 가진다는 것은 무엇을 의미합니까?
- A문제를 상수 시간에 풀 수 있다
- B모든 부분 문제의 크기가 같다
- C최적해를 부분 문제들의 최적해로부터 만들 수 있다
- D문제의 최적해가 정확히 하나이며 모든 부분 문제가 그것을 공유한다
6.보통
단순한 재귀 팩토리얼 함수 fact(n) = n × fact(n − 1)은 스택 공간을 얼마나 사용합니까?
- AO(log n)
- BO(n)
- CO(1)
- DO(n²)
7.어려움
동적 프로그래밍으로 푸는 0/1 배낭 문제는 O(nW) 시간이 걸립니다. 이것을 의사 다항 시간(pseudo-polynomial)이라고 부르는 이유는 무엇입니까?
- A알고리즘이 무작위화되어 있어 입력마다 실행 시간이 달라지기 때문이다
- Bn이 항상 작기 때문이다
- CW = 0일 때만 작동하기 때문이다
- DW는 수이므로 실행 시간이 W를 쓰는 데 쓰이는 비트 수에 대해 지수적이다
8.어려움
22n은 O(2ⁿ)에 속합니까?
- A아니요, 22n이 2ⁿ보다 느리게 증가하기 때문에
- B예, 둘 다 지수이기 때문에
- C예, 지수의 상수 계수는 Big O에서 항상 무시되기 때문에
- D아니요, 22n = 4ⁿ이고 4ⁿ / 2ⁿ = 2ⁿ은 한없이 커지기 때문에
정답표
- 1. D · 다항 시간에 풀 수 있을 때
- 2. A · O(n log n)
- 3. B · 지수
- 4. C · O(n)
- 5. C · 최적해를 부분 문제들의 최적해로부터 만들 수 있다
- 6. B · O(n)
- 7. D · W는 수이므로 실행 시간이 W를 쓰는 데 쓰이는 비트 수에 대해 지수적이다
- 8. D · 아니요, 22n = 4ⁿ이고 4ⁿ / 2ⁿ = 2ⁿ은 한없이 커지기 때문에
자세한 단계별 풀이: examproblems.com에서 이 주제를 연습하세요.