[의사코드]
swap(a, b)
temp <- a
a <- b
b <- temp
return (a, b);
[의사코드]
max(a, b)
if a > b then
return a;
else
return b;
[의사코드]
sum(n)
sum <- 0;
for i <- 1 to n do
sum <- sum + i
return sum;
Creat, Insert, Remove, Is_In, Union, intersection, Difference.
[정답]
And, Or, Not, Xor
[정답]
for(int i; i < n; i*=2)
printf("Hello");
[정답]
n = 2^t라고 가정.
총 t번의 연산이 필요하다.
t = log2_n 이므로, O(log n)의 복잡도를 갖는다.
for(i = 0; i < n; i++)
for(j = 1; j < n; j*=2)
printf("Hello");
[정답]
1. 안쪽 for문
n = 2^t라고 가정
총 t번의 연산이 필요하다.
t = log2_n
2. 바깥족 for문
총 n번의 연산이 필요하다.
-> 1, 2에 의하여
O(nlog n) 시간복잡도를 가진다.
(1) O(n) (2) O(nlog^2n)
(3) O(n^2) (4) O(n^2log2_n)
[정답]
(3)
(1) 연산의 횟수 (2) 프로그램의 수행시간
(3) 프로그램이 차지하는 메모리의 양 (4) 입력 데이터의 총개수
[정답]
(1)
(1) 변함없다. (2) 2배
(3) 4배 (4) 8배
[정답]
입력의 개수 = n, n^2의 연산 필요
입력의 개수 = 2n, 4n^2의 연산 필요
(3)
(1) 빅오메가 (2) 빅오
(3) 빅세타 (4) 존재하지 않는다.
[정답]
(2)
O(n), O(1), O(log n), O(n^2), O(nlong n), O(n!), O(2^n)
[정답]
O(1) < O(log n) < O(n) < O(nlong n) < O(n^2) < O(2^n) < O(n!)
[정답]
n > 30, n < -30
입력의 개수n 수행시간(초) 2 2 4 8 8 25 16 63 32 162
[정답]
|입력의 개수n|수행시간(초)|
|------|---|
|2|2x1|
|4|4x2|
|8|8x3|
|16|16x4|
|32|32x5|
따라서 O(n log n)
5n^2+3 = O(n^2)
[정답]
[정답]
(1) 배열의 n번째 숫자를 화면에 출력한다.
(2) 배열안의 숫자 중에서 최소값을 찾는다.
(3) 배열의 모든 숫자를 더한다.
[정답]
(1) 최선: O(1), 최악: O(1)
(2) 최선: O(1), 최악: O(n)
(3) 최선: O(n), 최악: O(n)
안녕하세요, 17-2번의 경우 최선의 경우도 O(n)이 아닌가 싶습니다. 최소값인지 확인하려면 배열을 한바퀴는 돌아야 할테니까요