Q1. 2개의 정수를 서로 교환하는 알고리즘을 의사코드로 작성해보자.
A1.
Q2. 사용자로부터 받은 2개의 정수 중에서 더 큰 수를 찾는 알고리즘을 의사코드로 작성해보자.
A2.
Q3. 1부터 n까지의 합을 계산하는 알고리즘을 의사 코드로 작성해보자.
A3.
Q4. set(집합) 추상자료형을 정의하라. 다음과 같은 연산자들을 포함시켜라.
Create, Insert, Remove, Is_In, Union, intersection, Difference
A4.
Q5. Boolean 추상 자료형을 정의하고 다음과 같은 연산자들을 포함시켜라.
A5.
Q6. 다음과 같은 코드의 시간 복잡도는? 여기서 n이 프로그램의 입력이라고 가정하자.
A6.
Q7. 다음과 같은 코드의 시간 복잡도는? 여기서 n이 프로그램의 입력이라고 가정하자.
for (i = 0; i < n; i++)
for (j = 1; j < n; j *= 2)
printf("Hello");
A7.
Q8. 시간 복잡도 함수 n^2 + 10n + 8를 빅오 표기법으로 나타내면?
- O(n)
- O(n log_2 n)
- O(n^2)
- O(n^2 log_2 n)
A8.
Q9. 시간 복잡도 함수가 7n + 10이라면 이것이 나타내는 것은 무엇인가?
- 연산의 횟수
- 프로그램의 수행시간
- 프로그램이 차지하는 메모리의 양
- 입력 데이터의 총개수
A9.
Q10. O(n^2) 의 시간 복잡도를 가지는 알고리즘에서 입력의 개수가 2배로 되었다면 실행시간은 어떤 추세로 증가하는가?
A10.
Q11. f(n)에 대하여 엄격한 상한을 제공하는 표기법은 무엇인가?
A11.
Q12. 다음의 빅오 표기법들을 수행시간이 적게 걸리는 것부터 나열하라.
A12.
Q13. 두 함수 30n + 4 와 n^2를 여러 가지 n값으로 비교하라. 언제 30n + 4가 n^2보다 작은 값을 갖는지를 구하라. 그래프를 그려보라.
A13.
Q14. 다음은 실제로 프로그램의 수행시간을 측정하여 도표롤 나타낸 것이다. 도표로부터 이 프로그램의 시간 복잡도를 예측하여 빅오 표기법으로 나타내라.
입력의 개수 n | 수행시간 (초) |
2 | 2 |
4 | 8 |
8 | 25 |
16 | 63 |
32 | 162 |
A14.
Q15. 빅오 표기법의 정의를 사용하여 다음을 증명하라.
5n^2 + 3 = O(n^2)
A15.
Q16. 빅오 표기법의 정의를 이용하여 6n^2 + 3n이 O(n)이 될 수 없음을 보여라.
A16.
Q17. 배열에 정수가 들어 있다고 가정하고 다음의 작업의 최악, 최선의 시간복잡도를 빅오 표기법으로 말하라.
- 배열의 n번째 숫자를 화면에 출력한다.
- 배열안의 숫자 중에서 최소값을 찾는다.
- 배열의 모든 숫자를 더한다.
A17.
'공부 > 자료구조 | 알고리즘' 카테고리의 다른 글
[자료구조] 연결 리스트 (0) | 2024.01.26 |
---|---|
[자료구조] 스택과 큐 (0) | 2024.01.26 |
[C언어로 쉽게 풀어쓴 자료구조] 1.3 알고리즘의 성능 분석 (0) | 2023.08.08 |
[C언어로 쉽게 풀어쓴 자료구조] 1.2 추상 자료형 (0) | 2023.08.08 |
[C언어로 쉽게 풀어쓴 자료구조] 1.1 자료구조와 알고리즘 (0) | 2023.08.08 |