BIG O Notation이 필요한 이유?
문제에대한 코딩을 할 때 여러가지 해결방법으로 풀 수 있다.
가령, join 메서드를 이용해서 문제를 해결한다던가 다른 메서드를 이용해서 문제를 해결하는 방법도 있다.
정답은 똑같이 도출되는데 그렇다면 어떤 문제해결방식(알고리즘)이 더 효율적일까?
효율성(성능)을 고려하는 것이 BIG-O Notation이라고 할 수 있다!!!
내가 개인 프로젝트를 하고 성능에 관계없는 코드를 짠다면 BIG-O Notation이 그렇게 중요하지 않을 수 있지만,
몇만줄을 실행하는 회사에서 한 줄의 코드 변경으로 인해 성능이 확 바뀐다면? 그게 BIG-O notation의 중요성이라면? 당연히! 필요하다.
좋은코드란?
주로 3가지를 본다.
혼자 개발하면 가독성은 빼도 되지만 함께 개발하는 문화에서는 종종 실행 성능을 어느정도 포기하고 가독성을 높이는 경우도 많다.
Speed, Time Complexity (알고리즘 성능 확인할때 가장 중요한것 중 하나) 측정하는방법!
timeOne = performance.now()
// 이 곳에 성능 측정하고 싶은 코드 넣기
timeTwo = performance.now()
console.log(`이 알고리즘이 걸리는 시간은?: ${(timeTwo- timeOne) / 1000}`)
위의 방식을 자주 사용하지만 만약 특정 알고리즘이 엄청나게 시간소요(2시간, 4시간) 걸린다면?
BIG O Notation의 종류
BIG O Notation Shorthands
Space Complexity (공간 복잡도)
Shorthands
Logarithm - 왜 필요한가?
Big O 복잡도 계산을 할 때 O(1) O(n) 이런식으로 깔끔하게 복잡도가 계산되는 경우는 적다
대부분 O(logN) 이런식이라서 로그에 대해서 알아 두면 좋다.
Log란?
곱셈과 나눗셈이 항상 같이 나오듯이, 지수와 로그는 서로 붙어 있다
logn(8) = 3 → N^3 = 8 이 나오는 N의 값을 찾아라 정도다. 정답은 2
저는 가독성이 가장 중요하다고 생각합니다ㅎㅎㅎ