Daehyunii's Dev-blog
<Udemy 알고리즘 강의 빅오 표기법/배열과 오브젝트 성능 평가> TIL-57 본문
모던 자바스크립트 기본 개념과 동작 원리를 1회독하고 알고리즘 강의를 듣기 시작했다. 정말 다행스럽게도 개발자인 지인의 추천을 받아 좋은 강의를 찾을 수 있었고, 오늘 처음으로 듣기 시작했다. 오늘 공부한 내용은 빅오 표기법이다. 빅오 표기법은 결국 코드와 코드를 비교할때 비교할 수 있는 기준이 되는 척도가 되는것이다. 모든 코드는 장단점을 가지고 있고 개발자는 각각의 상황에 맞는 알맞은 코드를 구현한다. 그런데 비교를 하고자 한다면 기준이 필요할 것이고, 그 기준을 만들어 놓은게 바로 빅오 표기법이다. 빅오 표기법은 크게 시간 복잡도와 공간 복잡도로 나눌 수 있겠다. 공간 복잡도는 전달하는 값이 크면 클수록 얼마나 많은 메모리 공간이 필요한지를 추세로, 시간 복잡도는 전달하는 값이 크면 클수록 얼마나 많은 연산이 이뤄지는지를 추세로 보여준다. 결국 빅오 표기법은 추세를 표현하는 것이다.
오늘 비록 알고리즘에 대해서 처음 듣기 시작했지만, 자바스크립트의 기본 개념을 공부할때 항상 느꼈던 것이 동일한 내용의 코드를 작성하는데 활용할 수 있는 방법들이 많다는 것을 알고 있었고, 도대체 왜 이렇게 동일한 내용의 코드를 작성하는데 많은 방법이 필요한지 의문이 들었었다. 하지만 빅오 표기법을 통해 간단한 예제들을 살펴보니, 그 이유를 충분히 알 수 있었다. 결국 코드를 작성할때의 목적, 상황들을 종합적으로 고려하여 가장 효율적인 코드를 작성하기 위함이었다. 단순히 빠르다고 좋은것도 아니며 단순히 메모리 공간을 적게 차지한다고 좋은 코드가 아니었던 것이다.
또한 메서드별로도 시간 복잡도가 다르다는것도 알 수 있었다. 특히 배열의 경우에는 인덱스를 가지고 있기 때문에 시간 복잡도 측면에서 많은 메서드들이 오래 걸리는것을 확인했다. 반대로 객체는 순서와 크게 상관이 없기 때문에 굉장히 빠르게 동작한다는 것도 알 수 있었다. 지금 처럼 코드들을 비교할 수 있게 표현해준것이 바로 빅오 표기법이다. 오늘을 기점으로 나도 코드를 비교할 수 있는 기준이 하나 생긴것 같아 조금은 개발자스러운(?) 대화를 할 수 있을것 같다.
2022.08.01 - [언어 공부 및 정리/자바스크립트 알고리즘 & 자료구조[Udemy강의]] - 01 빅오 표기법(Big O)
2022.08.01 - [언어 공부 및 정리/자바스크립트 알고리즘 & 자료구조[Udemy강의]] - 02 배열과 오브젝트의 성능 평가
'✏️ 2022. TIL > August' 카테고리의 다른 글
<Udemy 퀵 정렬> TIL-62 (0) | 2022.08.08 |
---|---|
<Udemy 삽입 정렬/합병 정렬> TIL-61 (0) | 2022.08.08 |
<Udemy 버블 정렬/선택 정렬> TIL-60 (0) | 2022.08.06 |
<Udemy 재귀/검색 알고리즘> TIL-59 (0) | 2022.08.05 |
<Udemy 문제 해결 접근법/문제 해결 패턴> TIL-58 (0) | 2022.08.04 |