TIL 40일차 Solo Day
오늘 목표했던 것 🗒
Big O 표기법 정리 ✓
1. Big O 표기법이란?
알고리즘의 성능을 수학적으로 표현하기 위한 표기법.
시간 복잡도와 공간 복잡도를 표현할 수 있다.
빅오 표기법은 알고리즘의 실제 러닝타임을 표기하는 것이 아닌
데이터나, 사용자의 증가율에 따른 알고리즘 성능을 예측하는 것이 목표이다.
종류
• O(1) Constant complexity
입력값이 증가해도 시간은 늘어나지 않는다.
function O_1_algorithm(arr, index) {
return arr[index];
}
let arr = [1, 2, 3, 4, 5];
let index = 1;
let result = O_1_algorithm(arr, index);
console.log(result); // 2
• O(n) Linear complexity
입력값이 증가함에 따라 시간 또한 같은 비율로 증가한다.
function O_n_algorithm(n) {
for (let i = 0; i < n; i++) {
// do something for 1 second
}
}
• O(log n) Logarithmic complexity
원하는 값을 탐색할 때마다, 경우의 수를 절반씩 없애는 알고리즘의 표기법.
let nthPower = function (base, exponent) {
// Base case:
if (exponent === 0) {
return 1;
// If exponent is odd
} else if (exponent % 2 !== 0) {
return base * nthPower(base, exponent - 1);
// If exponent is even
} else {
return nthPower(base * base, exponent / 2);
}
};
• O(n^2) Quadratic complexity
입력값이 증가함에 따라 시간이 입력값의 제곱수의 비율로 증가한다.
function O_quadratic_algorithm(n) {
for (let i = 0; i < n; i++) {
for (let j = 0; j < n; j++) {
// do something for 1 second
}
}
}
• O(2^n) Exponential complexity
입력값이 증가함에 따라 시간이 기하급수적으로 증가한다.
표기법 중 가장 느린 시간 복잡도를 가진다.
function fibonacci(n) {
if (n <= 1) {
return 1;
}
return fibonacci(n - 1) + fibonacci(n - 2);
}
참고자료 : https://www.youtube.com/watch?v=6Iq5iMCVsXA&t=127s
코드스테이츠 UrClass
추가로 진행한 것
리액트 공부
oh my zsh 테마 설정
Today's key💡
‣ 빅오표기법에 대해 정리하면서 처음에는 이해가 안됐던 것들을 이해할 수 있었다 !
‣ oh my zsh 테마를 설정하여 가독성이 좋아진 터미널을 사용할 수 있게 됐다.
‣ 리액트 기본 개념 공부중
Self-Evaluation
블로그의 필요성을 느낀 뒤부터 지금까지 하루도 빠짐없이 TIL을 작성중이다.
그저 꾸준히 작성하고 있는 것에서 성취감을 느끼고는 있지만, 이제는 퀄리티를 높여야 할 시기가 된 것 같다.
그래서 Daily Scrum 방식으로 블로그 작성 템플릿을 만들었는데,
앞으로는 매일 템플릿에 맞춰서 블로그 작성을 하려 한다.
이것들이 차곡차곡 쌓여서 꼭 나중에 결실을 맺었으면 좋겠다 !
Author And Source
이 문제에 관하여(TIL 40일차 Solo Day), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@moon3356/TIL-40일차-Solo-Day저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)