개발공부일지
Javascript - Algorithm, Big-O표기법, updown 게임 / Flow chart, mermaid, markdown 본문
Javascript - Algorithm, Big-O표기법, updown 게임 / Flow chart, mermaid, markdown
보람- 2023. 7. 19. 15:00목차
1. Big-O
2. Flow chart
1.Big-O
- O(1)
- 입력값으로 몇개를 넣어도 코드 실행함에 있어서 항상 일정한 속도를 유지하는것
- 데이터베이스설계할때, 블록체인에 있어서 생각해봐야함!!
console.log("a");
- O(n)
- 입력한 갯수만큼 실행되는것 (선언, 함수 메서드 계산법)
- 무한대까지 생각을 해야한다.
function bigOn(...arr) {
for (let i = 0; i < arr.length; i++) {
console.log(arr[i]);
}
}
bigOn(1, 700, "abc");
- O(log n)
- 입력수가 늘어날수록 입력수에 비해, 코드를 실행하는 횟수는 적게올라가는것
- 정렬에서 많이 사용한다
- 예시로 updown게임이있다.
→ 1~100중에서 숫자 하나를 생각하고 그 숫자를 맞추는 게임 ( 시작에 50을 불러서 업인지 다운인지 해서 알아가는)
100일 경우 → 50, 25, 12, 6, 3, 2, 1 → 7
200일 경우 → 100, 50, 25, 12, 6, 3, 2, 1 → 8
1000일 경우 → 500, 250, 125, 62, 31, 15, 7, 3, 2, 1 → 10
function updown(n, answer) {
let temp = n / 2,
temp2 = 0;
count = 1;
while (temp + temp2 != answer) {
if (temp + temp2 < answer) temp2 = temp + temp2;
temp = parseInt(temp / 2);
count++;
}
return count;
}
console.log(updown(100, 37));
△ 1~n까지의 수 중에서 answer를 맞추기 위한 횟수는?
→ 횟수를 구하기 위한
- O(n^2)
- 이중for문 같은 경우 (중첩)
function bigOn2(...arr) {
for (let i = 0; i < arr.length; ++i)
for (let j = 0; i < arr.length; ++j) console.log(i + j);
}
- O(2^n)
- 피보나치 수열
2. markdown에서 mermaid를 활용하여 flow chart 그리는법
```mermaid
flowchart TB
E(작업명)--> A
A[처리 / 작업] --> B{조건 if }
B--Yes--> C[true일때 작업]
B--No--> D[false일때 작업]
F[[작업명, 함수호출]]
```
★ 오늘의 포인트와 남겨두기 ★
※ 알고리즘에서 중요시 해야할, 흐름을 만드는데 있어서 중점에 두어야 할것
- 정확도, 시간, 메모리효율 (블록체인에선 결국 돈이니까)
→ 코드를 실행함에 있어서 시간이 얼마나 걸리는지에 대해서
※ 내일수업 정렬에 대해서 배우고나서 다시 정리하기
※ 플로우차트 TB (Top~ Bottom)
*** 앞으로 백엔드, 서버를 배우고 블록체인까지 배워 개발자가 되는 그날까지 화이팅!!!!!!!!!!
** 목표에 대해 생각하자!!!!!
* 만들고 싶은것의 흐름을 생각해보기
'Javascript' 카테고리의 다른 글
Javascript - 정규표현식 (Regular Expression) (0) | 2023.07.21 |
---|---|
Javascript - 정렬 알고리즘 기초 (Bubble, Insert, Select) / swap (0) | 2023.07.20 |
Javascript - this, bind, static, closure (0) | 2023.07.13 |
Javascript - class, prototype / 객체지향 (0) | 2023.07.12 |
Javascript - 고차함수, 즉시실행함수, 익명함수, 재귀함수, setTimeout / setInterval (0) | 2023.07.11 |