모두CBT

다음의 C 언어로 작성된 프로그램에서 calc함수의 실행시간(또는 실행… | [국회직 9급 컴퓨터일반] 20년 1회차 기출문제 상세 페이지

1[국회직 9급 컴퓨터일반] 20년 1회차
다음의 C 언어로 작성된 프로그램에서 calc함수의 실행시간(또는 실행 단계 수)를 점근 표기법으로 표시했을 때 옳은 것은?
int calc(int n) {
int i, j, ret = 0;
if (n <= 0)
return 0;
for (i = 1; i <= n; i ++)
ret += 1;
return ret + calc(n – 1);
}
1
O(log2n)
2
O(nlog2n)
3
O(n)
4
O(n2)
5
O(n3)
해설

calc 함수의 실행 시간은 O(n2)O(n^2)이다.

한 번의 호출에서 for 문이 n번 돌고, 이어서 calc(n - 1)을 호출한다.
T(n)=T(n−1)+nT(n)=T(n-1)+n
T(n)=n+(n−1)+⋯+1=n(n+1)2T(n)=n+(n-1)+\cdots+1=\dfrac{n(n+1)}{2}
최고차항이 n2n^2이므로 점근 표기는 O(n2)O(n^2)이다.

  • O(log⁡2n)O(\log_2 n): 호출마다 n이 절반이 아니라 1씩 줄어 호출 깊이만 해도 n이다.
  • O(nlog⁡2n)O(n\log_2 n): 호출 깊이가 log⁡2n\log_2 n일 때 나오는 형태로, 이 함수의 깊이는 n이다.
  • O(n)O(n): 반복문 없이 재귀 호출만 있을 때의 값으로, 호출마다 도는 for 문의 비용이 빠져 있다.
  • O(n3)O(n^3): 삼중 구조일 때의 값으로, 이 함수는 재귀 하나와 단일 for 문뿐이다.

오류나 개정된 내용이 보이면 알려주세요

이어서 풀어보기

[국회직 9급 컴퓨터일반] 20년 1회차 20문항 이어서 보기문제·정답·해설을 한 페이지에서 이어서 볼 수 있어요국회직 9급 컴퓨터일반 기출문제 암기장 전체 보기