
오늘 TIL 3줄 요약
- 시간 복잡도는 빅오(Big-O) 표기법을 사용하여 나타내며, 이 표기법을 보고 어떤 알고리즘을 사용할지 파악할 수 있다
- 어떤 알고리즘을 선택하느냐에 따라 작업 속도에 엄청난 차이가 발생한다
- 따라서 효율적인 코드 생성을 위해 자료구조와 알고리즘을 학습하자 !
TIL (Today I Learned) 날짜
2024.02.15
오늘 읽은 범위
에피소드 22 ~ 25
책에서 기억하고 싶은 내용을 써보세요.
📍 배열
✔️ 메모리 관점에서의 배열
휘발성 메모리
- 컴퓨터 전원을 껐을 때, 데이터가 사라짐
- 예) 램(RAM) : 프로그램을 실행할 수 있도록 필요한 데이터 저장, 데이터 저장 위치와 상관없이 일정한 접근 속도 보장비휘발성 메모리
- 컴퓨터 전원을 껐다가 켜도 데이터가 남아 있음
- 예) 컴퓨터의 하드 드라이브✔️ 배열의 특징
- 읽기
- 0부터 시작하며, 위치를 지시해서 데이터를 읽음
- 1단계 알고리즘으로, 배열에서 데이터를 찾는 속도 매우 빠름
- 검색
- 모두 탐색하며 데이터 확인
- 읽기보다 많은 시간 소요
삽입
- 가장 많은 시간 소요
- 삽입 시나리오 3가지1️⃣ 배열이 꽉 차지 않은 상태에서 배열 맨 마지막에 데이터를 추가하는 경우 2️⃣ 배열이 꽉 차지 않은 상태에서 배열 중간에 데이터를 추가하는 경우 3️⃣ 배열이 꽉 찬 상태에서 데이터를 추가하는 경우
- 삭제
- 삽입 원리와 유사
📍 알고리즘 속도 표현 방법
- 수행 작업이 몇 단계인지로 속도 결정
✔️ 시간 복잡도 : 빅오(Big-O) 표기법 사용
- O(1) : 실행 횟수가 고정된 경우
- O(N) : 배열의 길이가 N일 때, 검색 횟수가 최대 N인 경우
- O(N^2) : 배열의 길이가 N일 때, 검색 횟수가 N의 제곱수의 비율로 증가하는 경우
📍 검색 알고리즘
✔️ 선형 검색(linear seach)
- 시간 복잡도 : O(N) ➡️ 배열의 크기와 검색 시간 정비례✔️ 이진 검색(binary seach)
- 시간 복잡도 : O(logN) ➡️ 데이터가 아무리 많아진다고 해도 검색 시간은 데이터에 비해 그렇게 많이 필요하지 않음
- 거대한 배열을 다룰 때 효과적
- 데이터의 정렬이 끝난 배열에서만 사용 가능
- 배열의 중앙에서 검색을 시작하며 중앙값을 기준으로 데이터를 비교하여 왼쪽, 오른쪽으로 이동
오늘 읽은 소감은? 떠오르는 생각을 가볍게 적어보세요
✔️ 개발자에게 있어 CS 지식의 중요성에 대해 강조하는 글을 많이 보았다.
왜 공부해야 하는지 근본적인 원인은 알지 못한채 그저 기업에서 요구하니까 공부해야 하는구나 라는 생각을 했었다.
이번 에피소드를 통해 왜 그토록 자료구조와 알고리즘의 중요성에 대해 이야기 하는 건지 알게 되었고, 취업을 위해서가 아닌 나의 효율적인 코드를 위해 주도적으로 공부해야겠다는 생각이 들었다 🫠
궁금한 내용이 있거나, 잘 이해되지 않는 내용이 있다면 적어보세요.
🙅
오늘 읽은 다른사람의 TIL
유튜브 강의
[에피소드 22] https://youtu.be/9TyyMtlk5i4?si=0C44hL5qxw3skQVP
[에피소드 23] https://youtu.be/NFETSCJON2M?si=7stQvFgMIOAAyXCk
[에피소드 24] https://youtu.be/BEVnxbxBqi8?si=6XsHluIwCmAseVCg
[에피소드 25] https://youtu.be/WjIlVlmmNqs?si=50Ny3x2G5VP-tFnd