일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- javascript
- web
- 백준
- vercel
- 프로토타입
- level1
- superstarjypnation
- 스택
- 30daysdowoonchallenge
- Til
- 회고
- UI
- UX
- 큐
- REST_API
- html
- CSS
- mysemester
- 운영체제
- 생활코딩
- 프로그래머스
- React
- 자료구조
- 해시테이블
- 카카오
- 코드스테이츠
- 자바스크립트
- Next.js
- useState
- redux
- Today
- Total
데굴데굴
알고리즘 시간복잡도 1 본문
공부자료: 신찬수 교수님 유튜브 '자료구조' 재생목록
자료구조 + 알고리즘 --> [[[코드(C, java, Python)] 컴퓨터] HW/SW 환경 상이]
또한, 다양한 크기의 입력이 존재함.
알고리즘별로 빠르고 느린 입력이 다르다.
Q. 내가 작성한 코드가 얼마나 빨리 동작하는가를 객관적으로 어떻게 측정하는가?
- 가상컴퓨터 (Virtual Machine) + 가상언어 (Pseudo language) + 가상코드 (Pseudo Code)
--> 누구나 같은 환경에서 여러 알고리즘을 객관적으로 비교할 수 있게 됨.
1. 가상컴퓨터
Turing Machine -> von Neumann: RAM(Random Access Machine)
RAM = CPU + Memory (CPU의 계산 수행, 메모리에는 프로그램과 데이터가 저장됨)
어떤 식으로 메모리에 있는 데이터를 가공할 것인가? 이것이 코드
RAM = CPU + Memory + 기본연산
RAM Model
기본연산의 종류 (모두 1시간(단위시간) 내에 이루어짐)
- 배정, 대입, 복사연산: A = B
- 산술연산: +,-,*,/
- 비교연산: >, >=, <, <=, ==, !=
- 논리연산: AND, OR, NOT
- 비트연산: bit-AND, OR, NOT
2. 가상언어 (Pseudo/Virtual Languages)
가상컴퓨터가 알아들을 수 있는 형태의 언어
RAM model에서 제공하는 기본연산을 수행할 수 있어야 함.
- 배정, 산술, 비교, 논리, bit-논리 연산을 표현할 수 있으면 됨.
- if, if else, if elseif(elif)....else (제어할 수 있는 명령어 필요)
- 반복문 for, while
- 함수 정의 및 호출, return
3. 가상코드 (Pseudo Code)
ex)
algorithm ArrayMax(A,n): # 지금부터 ArrayMax라는 가상의 코드를 기술하겠다
input: n개의 정수를 받는 배열 A
output: A의 수 중에서 최대값 리턴
currentMax = A[0]
for i=1 to n-1 do
if currentMax < A[i]:
currentMax = A[i]
return currentMax
Q. 만약 위 가상함수에 array A = [3, -1, 9, 2, 12] (n=5)가 주어진다면, 기본연산을 몇 번 수행할까?
*for문 내부적으로 하는 기본연산은 세지 않음.
기본연산은 7회 이루어짐. 즉 7만큼의 단위시간이 필요하다.
무한히 많은 입력과 무한히 많은 n (n도 무한히 많음)
그 때마다 기본연산의 수행 횟수를 세는 것은 사실상 불가능.
그럼 이 때에는 어떻게 내 알고리즘을 판단해야 하나?
--> 다음 파트에서 이어짐.
'CS > 자료구조' 카테고리의 다른 글
순차적 자료구조 & 스택 (stack) (0) | 2022.06.16 |
---|---|
순차적 자료구조: 배열과 리스트 (0) | 2022.06.14 |
알고리즘 시간복잡도 Big-O (0) | 2022.06.14 |
알고리즘 시간복잡도 2 (0) | 2022.06.13 |
자료구조와 알고리즘 / gcd 파이썬 실습 (0) | 2022.06.11 |