유정월드 2023. 2. 24. 13:33

DAY 07

에피소드 22~25

..이번 일지는 지각제출 ㅠㅠ

 

<책에서 기억하고 싶은 내용>

[알고리즘이란?]

- 알고리즘은 컴퓨터에 내리는 지시사항을 나열한 것이다.

 

[ 데이터를 효율적으로 보관하고 찾기 위한 자료구조 ]

- 데이터 크기 기준 - 데이터를 작은 것부터 큰 순서로 정리

-  검색을 위한 인덱스 기준 - 이름표를 붙여서 정리하는 자료 구조

-  생성 시간 기준 - 데이터가 들어오는 순서로 정리하는 자료구조

 

[ 배열(읽기, 검색, 추가, 삭제 과정에서의 시간의 복잡도) ]

- 시간 복잡도는 작업 속도 

: 시간 복잡도는 프로그램의 작업 속도가 얼마나 빠른지 측정하는 방법이다. 예를 들어 배열에서 특정 값을 검색하는 시간, 특정 값을 특정 위치에 추가하는 시간 등등을 말한다. 시간 복잡도는 실제 시간을 재지 않고 그 대신 작업이 얼마나 많은 단계를 거치는지를 측정한다. 예를 들어 어떤 코드는 5단계, 어떤 코드는 20단계가 필요하다면? 5단계만 필요한 코드의 작업 속도가 빠르다고 한다.

 

- 메모리

: 메모리는 컴퓨터의 기억 공간을 말한다.

 

- 비휘발성 메모리는 컴퓨터의 하드드라이브(컴퓨터를 껐다 켜도 데이터가 남아있다)

 

- 휘발성 메모리 램

: 프로그램의 변수, 함수 이런 것들이 램에 저장된다. 한마디로 램이 잇어서 프로그래을 실행할 수 있다. 램은 데이터가 저장된 위치와 상관없이 일정한 접근 속도를 보장한다. 램은 데이터에 접근하는 속도가 매우 안정되고 빠르다. 

 

- 램과 함께 생각하는 배열

특징1) 배열을 읽는 방법과 속도

: 배열은 박스를 연이어 붙인 모양이라고 생각하면 된다. 배열은 0부터 숫자를 매긴다. 이런 방식으로 위치를 지시해서 데이터를 읽을 수 있다.

특징2) 배열을 검색하는 원리와 속도

: 배열 검색은 당장 몇 번째 데이터를 가져오라고 지시하는 것과 다르다. 배열 검색과정은 박스를 모두 뒤지는 방법으로 진행된다. 박스를 모두 열어 보고 들어 있는 데이터를 확인하는 것이다.

특징3) 배열에 데이터를 삽입하는 원리와 속도

특징4) 배열에서 데이터를 삭제하는 원리와 속도

 

[알고리즘의 속도는 어떻게 표현할까]

- 시간 복잡도를 이야기할 때는 알고리즘으로 작업을 완료할 때까지의 걸리는 절차 수 N을 이용해서 O(N), O(log N)과 같이 표현하는데, 이것을 빅 오(Bing-O)표기법이라고 한다.

 

- 알고리즘의 속도를 표현하는 Big-O

: 선형 검색 알고리즘 - 배열을 앞에서부터 하나씩 검색하고, 그래서 배열 크기가 커지면 검색 시간도 정비례로 커진다. 배열의 길이를 N이라고 하면 검색 횟수는 최대 N이 되는 것이다. 이때 시간 복잡도는 O(N)과 같이 표현한다. 

<읽은 소감은 ? 떠오르는 생각을 가볍게 적어보세요>