[Data_Structure] Complexity

먹보·2023년 1월 27일
2
post-thumbnail

프로그래밍을 시작한지 얼마 안되었다보니, 코딩을 할 때 무지성으로 코딩을 하는 경우가 많아진다.

그리고 그렇게 코드를 짜다보면 항상 나오는 말이 있다...

  1. 어떤 데이터 구조를 사용한거야?
  2. 어떤 알고리즘을 적용 했니?
  3. BigO는 생각해봤어?

사실 부트캠프에서 html과 css를 배우고 메인 언어인 JavaScript를 배울 때 까지만 해도 프로젝트가 주어지면 그것에 맞는 로직을 짜는라 바쁘기만 해서 위에 질문들을 고려해보지 않았지만 좋은 개발자가 되기 위해서는 구조와 시간 복잡도는 항상 생각을 해봐야 할 것 같다.

데이터 구조와 알고리즘은 지난 게시글에서 언급했듯이 하나 하나 들여다 볼 예정이고...

우선 BigO부터 알아보려고 한다

✍ 시간 복잡도 그리고 BigO

시간 복잡도란 단순하게 생각하자면, 로직이 실행되는 시간과 그 로직에 쓰이는 함수와의 관계를 뜻하며, 이걸 조금 더 쉽게 알아보기 위해 만든 컨벤션으로 BigO = O(n)로 나타낸다.

=> O(n)을 쉽게 표기하자면, 입력범위 n을 기준으로 로직이 몇 번 반복이 되는지 척도를 나타낸 것이다.

사용되는 알고리즘에 따라 Big O가 나눠지게 되는데 수학적으로 접근하면 이해가 쉬워진다.

수학적으로 생각했을 때 좌측으로 갈수록 더 오래 걸리기 때문에 본인이 설계한 자료구조와 알고리즘을 점검해 볼 필요가 있다.

✍ 공간 복잡도

공간 복잡도란 쉽게 말해서 프로그램이 실행되었 때 필요로 하는 자원의 양을 의미한다

아직까지..공간복잡도를 나에게 언급하는 선임 개발자들이 없는 걸로 봐서는...지금 바로 다뤄보지 않아도 될 것 같다..

profile
🍖먹은 만큼 성장하는 개발자👩‍💻

0개의 댓글