Notice
Recent Posts
Recent Comments
Link
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

개발공부일지

Javascript - Algorithm, Big-O표기법, updown 게임 / Flow chart, mermaid, markdown 본문

Javascript

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) 

 

 

*** 앞으로 백엔드, 서버를 배우고 블록체인까지 배워 개발자가 되는 그날까지 화이팅!!!!!!!!!!

** 목표에 대해 생각하자!!!!!

* 만들고 싶은것의 흐름을 생각해보기