프로그래밍을 시작한지 얼마 안되었다보니, 코딩을 할 때 무지성으로 코딩을 하는 경우가 많아진다.
그리고 그렇게 코드를 짜다보면 항상 나오는 말이 있다...
사실 부트캠프에서 html과 css를 배우고 메인 언어인 JavaScript를 배울 때 까지만 해도 프로젝트가 주어지면 그것에 맞는 로직을 짜는라 바쁘기만 해서 위에 질문들을 고려해보지 않았지만 좋은 개발자
가 되기 위해서는 구조와 시간 복잡도는 항상 생각을 해봐야 할 것 같다.
데이터 구조와 알고리즘은 지난 게시글에서 언급했듯이 하나 하나 들여다 볼 예정이고...
우선 BigO부터 알아보려고 한다
시간 복잡도란 단순하게 생각하자면, 로직이 실행되는 시간과 그 로직에 쓰이는 함수와의 관계를 뜻하며, 이걸 조금 더 쉽게 알아보기 위해 만든 컨벤션으로 BigO = O(n)로 나타낸다.
=> O(n)을 쉽게 표기하자면, 입력범위 n을 기준으로 로직이 몇 번 반복이 되는지 척도를 나타낸 것이다.
사용되는 알고리즘에 따라 Big O가 나눠지게 되는데 수학적으로 접근하면 이해가 쉬워진다.
수학적으로 생각했을 때 좌측으로 갈수록 더 오래 걸리기 때문에 본인이 설계한 자료구조와 알고리즘을 점검해 볼 필요가 있다.
공간 복잡도란 쉽게 말해서 프로그램이 실행되었 때 필요로 하는 자원의 양을 의미한다
아직까지..공간복잡도를 나에게 언급하는 선임 개발자들이 없는 걸로 봐서는...지금 바로 다뤄보지 않아도 될 것 같다..