오늘 할 일
- JavaScript Deep dive 책 필사하기 (아침 8시)
- 알고리즘 강의 수강
- Git,github 강의
- Python 복습
- CS 특강
계획표
시간 | 내용 | 결과 |
8:00~8:40 | Js 아침 필사 | ☀️ |
11:00~12:00 | CS특강 | ⛈ |
13:00~14:00 | Python 복습 | ⛈ |
14:00~16:00 | 알고리즘 특강 | ⛈ |
17:00~23:00 | 알고리즘 강의 및 Git, github 강의 | ☀️ |
👩🏼🌾 오늘의 줍줍 " "
chr() 아스키 코드에서 숫자를 문자로 변환
시간복잡도 : 입력값과 문제를 해결하는데 걸리는 시간과의 상관관계를 말한다.
우린 시간이 적게 걸리는 알고리즘을 좋아하기 때문에 덜 걸리는 알고리즘이라는 기준을 세우기 위한 계산법.
계산법 : 각 줄이 실행되는 걸 1번의 연산이 된다고 생각하기
ex)
max_num = array[0] # 연산 1번 실행
for num in array : # array의 길이만큼 연산 실행(반복문)
if num > max_num: # 비교연산 1번 실행
max_num = num # 대입 연산 1번 실행
결론 => 1 + 2 X N 번의 시간 복잡도 실행
결론
- n과 n^2은 N이 커질수록 더 큰 차이가 난다.
- N의 지수를 먼저 비교해보면 훨씬 빨리 차이를 알 수 있다.
공간복잡도 : 입력값과 문제를 해결하는데 걸리는 공간과의 상관관계
계산법 : 저장하는 데이터의 양이 1개의 공간을 사용한다고 계산
ex)
alphabet_array = ['a','b','c',...'z'] # 데이터 26개의 공간 사용
max_occurrence = 0 # 1개 공간 사용 (변수)
max_alphabet = alphabet_array[0] # 1개 공간 사용 (변수)
for alphabet in alphabet_array : # 사용 X 그냥 반복문일뿐
occurrence = 0 # 1개 공간 사용 (변수)
결론 => 26 + 3 = 29
시간복잡도 vs 공간복잡도 중 좋은 알고리즘을 위해 더욱 신경써야하는것은? 답) 시간복잡도
시간복잡도 : 함수의 n값으로 표현 가능
공간복잡도 : 상수(숫자)로 나타나기 때문에
=> 상수보단 n값이 더욱 격차가 나서 효율적인 코드를 만들기 위해선 공간복잡보다 시간복잡도를 유의해야 한다.
결론 => 차수(n값)에 비례해서 얼마나 복잡도가 향상하는지 고민만하면됨, 상수는 신경 X / 공간복잡도보다 시간복잡도를 더 신경써야 한다!
점근 표기법 : 알고리즘의 성능을 수학적으로 표기하는 것. 즉, 알거리즘 "효율성"을 평가하는 방법
종류 : Big-O / Big-Ω 표기법
Big-O 표기법 : 최악의 성능이 나올 때 어느 정도의 연산량이 걸릴것인지 표기법 : 0(n)
Big-Ω 표기법 : 최선의 성능이 나올 때 어느 정도의 연산량이 걸릴 것인지 표기법 : Ω(1)
Big-O vs Big-Ω 중 항상 중요하게 여겨야 하는 것은? : Big-O표기법
이유 : 항상 최선보단 최악의 성능에 초점을 맞춰야 비교가 가능하기 때문에
Big-O 빅오 표기법을 더욱 신경써야한다
'🌼 TIL' 카테고리의 다른 글
🌱 11/15 내배캠 React 12일차 (1) | 2022.11.15 |
---|---|
🏃 11/14 내배캠 React 11일차 (1) | 2022.11.14 |
👏🏻 11/09 내배캠 React 9일차 (1) | 2022.11.10 |
😭 11/09 내배캠 8일차 (1) | 2022.11.09 |
🌖 11/08 내배캠 React 7일차 (1) | 2022.11.08 |