반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- WIL
- HTTP요청
- chart.js fillText
- manifest error
- UI
- react-router-dom v.6
- section1회고
- manifest에러
- stackoverflow-clone회고
- UI/UX 분석
- ux
- yarnrc.yml
- 삽질일지
- Firestore_Data_Types
- Manifest 에러
- Section2회고
- 도넛 차트 가운데 글자
- section3 회고
- 북클럽
- chart.js 반응형
- CND
- 리액트 라우터 버전 에러
- 경우의 수 줄이자
- 인쇄 css
- 에러 마지막줄
- 노마드코더
- 노개북
- vue chart.js
- 리액트 라우터 돔 에러
- 콘솔 manifest
Archives
- Today
- Total
FE
[노개북 - Day 7 ] 23.01.19 본문
✍️ TIL (Today I Learned)
- 자료구조 && 알고리즘
- 배열
- 알고리즘 속도 표현
- 검색 알고리즘
📑 오늘 읽은 범위
에피소드 22 ~ 에피소드 25
🔖 책에서 기억하고 싶은 내용
- 자료구조 && 알고리즘
- 코드를 효율적으로 만들기 위해
- 알고리즘 : 컴퓨터에게 내리는 지시 사항 나열
- 패스파인더(pathfinder)알고리즘 : 목적지까지 최대한 빨리 가는 방법,
- 압축(compression)알고리즘 : 이미지를 덜 손상시키면서 용량을 효율적으로 줄일 수 있는 알고리즘(png, jpg)
- 자료구조 : 데이터를 효율적으로 보관, 찾기 위해
- 데이터를 다루는 방식(자료구조)에 따라 프로그램 속도가 달라짐
- 배열
- 시간 복잡도 : 작업 속도 → 실제 시간을 재는 것보다 몇 단계를 거치느냐에 따라 다름
- 메모리 : 컴퓨터의 기억공간
- 휘발성 메모리 : 컴퓨터 전원을 껐을 때 저장한 값이 사라짐,
- ex) 램(RAM, random access memory) : 프로그램에 필요한 데이터가 저장(프로그램 변수, 함수)
- 비휘발성 메모리 : 컴퓨터 전원을 껐을 때도 저장한 값이 남아 있음
- ex) 하드 드라이브(C, D)
- 휘발성 메모리 : 컴퓨터 전원을 껐을 때 저장한 값이 사라짐,
- RAM의 속도 : 데이터 저장 위치와 상관 없이 일정한 접근 속도 보장, 데이터에 접근하는 속도가 안정적, 빠름 → 램 = 주소지가 적힌 박스가 많이 있는 창고, 박스에는 데이터 1개 → 박스마다 주소가 있어서 데이터 찾는 속도 빠름
- RAM의 관점에서 배열 : 배열의 길이를 알려주면 박스가 길이만큼 붙은 모양으로 배열 공간이 생긴다.
- 특징 1 : 배열을 읽는 속도는 1단계 굉장히 빠름, 0부터 시작
- 특징 2 : 배열 검색은 박스 속 데이터를 확인 → 빠르지 않음
- 특징 3 : 배열에 데이터 삽입
- 맨 마지막 데이터 추가 : 컴퓨터는 배열의 길이와 시작점을 기억하고 있어 끝에 데이터 추가
- 중간에 데이터 추가 : 넣고 싶은 위치에서 뒤에 있는 데이터들을 뒤로 옮겨서 공간 확보 후 데이터 추가
- 배열에 데이터가 꽉 차 있을 때 : 새 배열 만들기(더 큰 배열) → 복사하기 → 추가하기
- 특징 4 : 배열 데이터 삭제 → 삽입하는 원리와 비슷, 배열은 맨 앞부터 채워야 해서 마지막 데이터 삭제가 쉽고 맨 앞 데이터 삭제가 어려움
- 알고리즘 속도 표현
- Big-O : 알고리즘으로 작업을 완료할 때까지 걸리는 절차 수 N을 사용해 O(N), O(log N)과 같이 표현
- 선형 알고리즘 : 배열을 앞에서부터 하나씩 검색 → 배열 길이 N, 절차 N → O(N)
- 시간 복잡도를 표기하는 방법 → Big-O 표기법 → 장점 : 설명 간결, 알고리즘 분석 빠르게
const arr = [1, 2, 3]; // O(1) : 배열의 길이와 관련 없이 한 번 실행, O(2)라고 표현하지 않음 단계별로 표시 console.log(arr[0]); console.log(arr[0]); // O(N) : 배열의 길이에 비례 for(const n of arr){ console.log(n) } // O(N^2) 배열의 길이에 제곱배로 느려짐 for(let i=0;i<n;i++){ for(let j=0;j<n;j++){ console.log(i,n) } }
- 검색 알고리즘
- 선형 검색(linear search)
- y = x
- 이진 검색(binary search)
- 데이터 정렬이 끝난 배열에만 사용할 수 있다.
- 이런 특정 알고리즘은 특정 자료구조에서만 사용할 수 있다.
- 중앙값을 기준으로 검색 시작 우리가 찾는 값(x)이 중앙값(middle)과 비교 시
- x === middle return middle
- x > middle 오른쪽 검색
- x < middle 왼쪽 검색
- 속도가 빠름 → 배열의 절반을 제외할 수 있어서 → y = log x
- 거대한 배열을 다룰 때 효과적
- 선형 검색(linear search)
'TIR > IT 5분 잡학지식' 카테고리의 다른 글
[노개북 - Day 9 ] 23.01.21 (0) | 2023.01.21 |
---|---|
[노개북 - Day 6 ] 23.01.18 (1) | 2023.01.19 |
[노개북 - Day 5 ] 23.01.17 (0) | 2023.01.17 |
[노개북 - Day 3 ] 23.01.15 (1) | 2023.01.15 |
[노개북 - Day 2 ] 23.01.14 (0) | 2023.01.14 |
Comments