[북클럽 챌린지] DAY 7
2023-01-196 min read
DAY 7
🔖 오늘 읽은 범위 : 에피소드 22 ~ 25
- 자료구조와 알고리즘은 필수라고?
- 배열이 뭐죠?
- 알고리즘의 속도는 어떻게 표현할까?
- 검색 알고리즘이 뭐죠?
😃 기억하고 싶은 내용
-
자료구조와 알고리즘은 대체 언제 필요할까?
코드를 효율적으로 빠른속도로 만들고 관리하고 협업하기 편하도록 정리할 때 -
알고리즘 - 컴퓨터에게 내리는 지시사항을 나열한 것
- 패스파인더 알고리즘: 지도앱에서 목적지까지 최대한 빨리 가는 방법을 알려주는 기능
- 압축 알고리즘: 이미지를 저손상 저용량으로 줄여주는 알고리즘 (jpg, png 파일)
-
자료구조
자료구조의 자료 = 데이터, 데이터를 효과적으로 보관하고 찾기 위함.
어떤 자료구조를 사용하는지에 따라 프로그램 속도를 좌우함. → 목적에 따른 자료구조방식(기준)을 세워야함. -
배열 가장 먼저 만나는 자료구조
- 읽기 - 배열은 0부터 숫자를 세고, 위치를 지시해서 데이터를 읽을 수 있기 때문에 읽는 속도가 빠름.
- 검색 - 찾아야하기 때문에 읽는 속도보다 빠르지 않음.
- 추가 - 중간에 추가하려면 뒤로 옮기고 추가 / 꽉 찼을 때에는 새 배열을 만들고 복사하고 추가하기.
- 삭제 - 중간 데이터를 삭제하려면 삭제 후 뒤쪽 데이터를 당겨오기.
- 시간복잡도 - 프로그램의 작업속도가 얼마나 빠른지 얼마나 많은 단계를 거치는지 측정하는 방법
👩💻 배열은 램에 줄줄이 이어진 형태로 공간을 차지한다.
컴퓨터는 배열의 시작 주소와 길이를 알고 있다. 그래서 배열은 읽는 속도가 빠르다.
배열은 앞부터 차곡차곡 채워져있어야 한다. 그래서 삽입과 삭제가 느리다. -
알고리즘의 속도 a.k.a 빅 오(Big-O)표기법
알고리즘으로 작업을 완료할 때까지 걸리는 절차 수 N을 이용해 O(N), O(logN)으로 표현하는데,
이것을 빅 오(Big-O)표기법이라고 한다.
예) 선형 검색 알고리즘의 경우, 배열의 길이를 N이라고 하면 검색횟수는 최대N → 시간복잡도는 O(N)- 상수시간 (constant time) : 실행 횟수가 고정으로 정해진 것.
- Big-O는 실행단계에 영향을 주는 요소만 본다.
-
검색 알고리즘의 종류
선형 검색 알고리즘 이진 검색 알고리즘 특징 배열의 순서대로 처음부터 검색
7을 찾는다면?
1,2,3,4,5,6,7,8,9거대한 배열을 다룰때 효율적!
항상 정렬되어 있는 배열에서 사용가능
중간부터 검색을 시작
9를 찾는다면?
1,2,3,4,5,6,7,8,9
5,6,7,8,9
7,8,9
9
🤔 오늘의 파트에 대한 소감
- 오늘 파트는 조금 어려워서 여러번 읽긴 했는데 제대로 이해했는지 잘 모르겠다. 그래도 접하기 어려웠던 알고리즘의 중요성을 알게 되었다.
- 그동안 그냥 삽입방법, 삭제방법만 검색해서 따라만 해봤지. 왜 이렇게 해야하는지는 생각치못했는데 배열의 동작원리와 시간복잡도의 존재를 알게되었다.
- 휴먼리소스머신이라는 앱게임을 하고있는데 코드를 써서 게임을 클리어하면 계산된 코드 실행단계를 보여준다. 이것도 일종의 시간 복잡도일까?
🔎 추가로 알게 된 것
(책 내용 +알파로 궁금한 것, 이해가 가지 않는 것 등)
- 시간 복잡도의 성능 비교
🤟소감 3줄 요약
- 자료구조와 알고리즘을 공부하면 코드를 더 효율적으로 만들 수 있다.
- 시간복잡도는 시간이 아닌 N단계로 측정한다.
- Big-O표기법: 알고리즘의 시간복잡도를 표현하는 방법.