오늘 TIL 3줄 요약
- 자료구조와 알고리즘은 개발의 효율과 성능을 위한 것. 효율성에 대한 고민은 언제나 끝이없다.
- 배열은 컴퓨터안에 있는 메모리라는 창고에 데이터라는 상자를 쌓아두는 방식이다.
- 알고리즘의 속도는 시간복잡도 개념으로 측정하며 표기법은 빅오표기법!
- 이진 알고리즘은 정렬된 데이터를 절반씩 쪼개가며 찾는 방법!
TIL (Today I Learned) 날짜
2023.01.19
오늘 읽은 범위
- 에피소드 22 : 자료구조와 알고리즘은 필수라고?
- 에피소드 23 : 배열이 뭐죠?
- 에피소드 24 : 알고리즘의 속도는 어떻게 표현할까?
- 에피소드 25 : 검색 알고리즘이 뭐죠?
책에서 기억하고 싶은 내용을 써보세요.
- 자료구조와 알고리즘은 처음 개발할 때는 굳이 공부할 필요는 없다. 그러나 나중에 코드의 관리와 효율성을 위해서는 꼭 적용하고 고민해야하는 부분이다.
- 메모리는 휘발성 메모리와 비휘발성 메모리로 나뉜다. 휘발성 메모리 중 대표적인 것이 램(RAM)이다.
- 램은 창고같은 역할을 하는데 그 창고에 데이터를 적재하는 방식을 배열이라고 생각하면 된다.
- 배열에 있는 데이터를 읽고(read), 검색(search)하고, 추가(add)하고, 삭제(delete)하는 작업은 각각 방법과 속도가 다름.
- 배열을 읽는 속도는 빠르지만 검색, 추가, 삭제는 데이터(상자)가 쌓여있기 때문에 느림.
- 알고리즘의 속도 시간복잡도라는 개념으로 표현하는데 ,빅오(Big-O)표기법으로 나타낸다.
- O(1) - 상수시간(constant time) : 그 알고리즘의 실행단계는 1번이다. 즉 배열길이와 상관없이 늘 같다.
- O(N) - 일차함수?
- O(n²) - 이차시간(quadratic time) : 중첩반복문이 있을때
- y축을 시간, x축을 배열 길이로 둔 함수로 생각하면 된다.
- 선형검색(Linear search) - 앞에서부터 하나하나 찾는것이다. 배열의 수만큼 시간이 걸린다. O(N)
- 이진검색(binary search) - 정렬이 되어있는 배열에서만 사용 가능하다. 시간복잡도가 작으므로 배열의 크기가 클 때 효율을 발휘한다. O(logN)
오늘 읽은 소감은? 떠오르는 생각을 가볍게 적어보세요
- 알고리즘이나 자료구조 모두 효율성을 만들기 위한 목적이다. 다른 분야에서도 마찬가지로 효율적으로 일하고 관리하기 위한 고민을 하는데 똑같이 코딩하고 개발을 할때에도 사용하는 기술이나 도구는 다르지만 고민거리는 여전히 같다는 생각이 든다.
- C언어를 찍먹할 때 포인터라는 개념이 잘 잡히지 않아 고생했었는데, 이게 메모리 읽는거를 말하는 것인지 다시 한번 생각하게 되었다. 책을 읽으니 이렇게 뒤죽박죽이던 개념들이 하나하나 정리가 되어가는 것 같아서 감사하다.
궁금한 내용이 있거나, 잘 이해되지 않는 내용이 있다면 적어보세요.
- 알고리즘 공부는 어떻게 하는것이 좋을까?? 수학의 정석 보는것처럼 문제 많이 풀면 되는건가...
오늘 읽은 다른사람의 TIL
728x90
'TIL > TIL - 노개북' 카테고리의 다른 글
[TIL_9 IT잡학사전] 에피소드 30~34 (0) | 2023.01.22 |
---|---|
[TIL_8 IT잡학사전] 에피소드 26~29 (0) | 2023.01.21 |
[TIL_6 IT잡학사전] 에피소드 16~21 (0) | 2023.01.18 |
[TIL_5 IT잡학사전] 에피소드 11~15 (0) | 2023.01.17 |
[TIL_3 IT잡학사전] 에피소드 6~10 (0) | 2023.01.17 |