새발블로그
[C언어로 쉽게 풀어쓴 자료구조] 1장 본문

01 2개의 정수를 서로 교환하는 알고리즘을 의사 코드로 작성해보자.
Swap(A,B)
tmp<-A
A<-B
B<-tmp
return (A,B);
02 사용자로부터 받은 2개의 정수 중에서 더 큰 수를 찾는 알고리즘을 의사코드로 작성해보자.
max(A,B)
if A>B then
return A;
else
return B;
03 1부터 n까지의 합을 계산하는 알고리즘을 의사코드로 작성해보자.
sum(n)
n*(n+1)//2
04 Set(집합) 추상 자료형을 정의하라. 다음과 같은 연산자들을 포함시켜라.
Create, Insert, Remove, Is_In, Union, intersection, Difference.
Create : 집합을 생성한다.
Insert : 집합에 원소를 추가한다.
Remove : 집합의 원소를 제거한다.
Is_In : 집합에 원소의 여부를 확인한다.
Union : 합집합
Intersection : 교집합
Difference : 차집합
05 Boolean 추상 자료형을 정의하고 다음과 같은 연산자들을 포함 시켜라.
And, Or, Not, Xor
And(a,b)
if a==1 and b==1 return 1;
else 0;
Or(a,b)
if a==0 and b==0 return 0;
else 1;
Not(a)
if a==0 return 1;
Xor(a,b)
if(a==1 and b==1) or (a==0 and b==0) return 0;
else return 1;
06 다음과 같은 코드의 시간 복잡도는? 여기서 n이 프로그램의 입력이라고 가정하자.
for(i=1; i<n; i*=2)
print("Hello")
답: O(logn)
07 다음과 같은 코드의 시간 복잡도는? 여기서 n이 프로그램의 입력이라고 가정하자.
for(i=0; i<n; i++)
for(j=1;j<n;j+=2)
printf("Hello");
답: O(nlogn)
08 시간 복잡도 함수 n' + 10n + 8를 빅오 표기법으로 나타내면?
(1)O(n)
(2)O(nlog₂n)
(3)O(n²)
(4)O(n²log₂n)
답: (3)O(n²)
09 시간 복잡도 함수가 7n+10이라면 이것이 나타내는 것은 무엇인가?
(1)연산의 횟수
(2)프로그램의 수행 시간
(3)프로그램이 차지하는 메모리의 양
(4) 입력 데이터의 총개수
답 : (1)연산의 횟수
10 O(n²)의 시간복잡도를 가지는 알고리즘에서 입력의 개수가 2배로 되었다면 실행시간은 어떤 추세로 증가하는가?
(1)변함없다.
(2)2배
(3)4배
(4)8배
답: (3)4배
11 f(n)에 대하여 엄역한 상한을 제공하는 표기법은 무엇인가
(1)빅오메가
(2)빅오
(3)빅세타
(4)존재하지 않는다
답: (2) 빅오
12 다음의 빅오표기법들을 수행시간이 적게 걸리는 것부터 나열하라.
O(1) O(n) O(logn) O(n²) O(nlogn) O(n!) O(2ⁿ)
O(1)< O(logn) < O(n) < O(nlogn) < O(n²) < O(2ⁿ) < O(n!)
13 두 함수 30n+4와 n²를 여러 가지 n 값으로 비교하라. 언제 30n+4가 n²보다 작은 값을 갖는지를 구하라. 그래프를 그려보라.
14 다음은 실제로 프로그램의 수행시간을 측정하여 도표로 나타낸 것이다. 도표로부터 이 프로그램의 시간 복잡도를 예측하여 빅오 표기업으로 나타내라.
| 입력의 개수 n | 수행시간 (초) |
| 2 | 2 |
| 4 | 8 |
| 8 | 25 |
| 16 | 63 |
| 32 | 162 |
답 : O(n log n)
15 빅오표기법의 정의를 사용하여 다음을 증명하라.
5n²+3=O(n²)
16 빅오 표기법의 정의를 이용하여 6n²+3n이 O(n)이 될 수 없음을 보이라.
17 배열에 정수가 들어 있다고 가정하고 다음의 작업의 최악, 최선의 시간복잡도를 빅오 표기법으로 말하라.
(1) 배열의 n번째 숫자를 화면에 출력한다.
(2) 배열안의 숫자 중에서 최소값을 찾는다.
(3) 배열의 모든 숫자를 더한다.
답:
(1) 최선-O(1), 최악-O(n)
(2) 최선-O(n), 최악-O(n)
(3) 최선-O(n), 최악-O(n)
'Computer Science > Data Structure' 카테고리의 다른 글
| [C언어로 쉽게 풀어쓴 자료구조] 3장 (0) | 2023.08.25 |
|---|---|
| [C언어로 쉽게 풀어쓴 자료구조] 2장 (0) | 2023.08.24 |
| Heaps (0) | 2023.08.09 |
| Hashing (0) | 2023.08.09 |
| Graph (0) | 2023.08.09 |