이제는 실제로 빅오에 대한 이해를 가지고 정의를 할 수 있어야한다.
O(n)과 O(n^2)에 실행 속도를 생각해보자!
기본적으로 입력이 n이 커질수록 알고리즘이 얼마나 효율적인지 표현하는 방식이라는 것을 기억해둬야한다. 단순한 상수가 커지는 값이 아닌 n2그래프 처럼 수학적으로 접근할 수도 있다.
"입력인 n이 커질수록 알고리즘이 얼마나 효율적인지 표현하는 방식"
작은 연산이나 상수에 집중하는 것이 아닌 n,n^2, n^2 ... 크게 보고 효율을 찾아가려한다.(추세)
예시)
function check5(n) {
for (var i = 1; i <= Math.max(5, n); i++) {
console.log(i);
}
}
check5(4);
console.log(check5(4));
O(n^2+5n+8) => O(n^2) 으로 볼 수 있다.
사실상 정확하지는 않지만 추세에서는 크게 벗어나지않는다는 것을 인지하자!
단순화하는 작업이라고 볼수있다.
I've been focusing on time complexity, run time.
How can i analyze the runtime of an algorithm as the size of the inputs increases?
입력이 커질수록 알고리즘이 얼마나 커질지 상상해보자.
공간과 사용되는 메모리에 집중하면서 문제들을 접근해야한다.
이것을 "공간복잡도"라고 말한다.
로그함수 / 지수함수