c# 백준 24262 알고리즘 수업 - 알고리즘 수행 시간
풀이 과정
수행 횟수니, 수행 횟수의 최고차항이니 처음보는 단어가 있어서 대체 무슨소리인지 몰라 찾아보니 시간 복잡도에 대한 개념이 필요했다.
시간 복잡도
는 간단히 말해 입력값에 코드의 작동시간이 얼마나 걸리나를 말한다.
수행 횟수는 시간 복잡도를 나타내는 개념으로 써 몇번 수행되었나를 의미한다.
다음 코드를 봐보자
for (int i = 0; i < 3; i++)
{
Console.Write(i);
}
이 코드의 경우 3번 반복되는 반복문이다.
이 경우 수행 횟수는 3
번이다.
다음 코드를 봐보자
for (int i = 0; i < n; i++)
{
Console.Write(i);
}
이번에는 입력값(n)에 따라 반복 횟수가 늘어난다. 즉, 수행 횟수가 n이 된다.
만야 for문이 2중, 3중 늘어난다면 수행 횟수의 차수가 증가하게 된다. n^2, n^3, n^4…
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
Console.Write(j); // n^2의 수행시간
}
}
여기서 문제에서 말하는 최고차항이 가장 큰 차수를 말하는 것이다.
그럼 이제 문제를 봐보자. 문제는 다음같은 함수를 보여준다.
MenOfPassion(A[], n) {
i = ⌊n / 2⌋;
return A[i];
}
이 함수는 입력값(n)에 영향을 받지 않고 무조건 1번
실행된다.
이는 수행횟수가 1
임을 알 수 있고 최고차항이라 할 것도 없이 n에 영향을 받지 않으니
최고차항의 계수는 0
임을 알 수 있다.
전체 코드
class Program
{
static void Main(string[] args)
{
Console.WriteLine("1\n0");
}
}
댓글남기기