[노개북] It 5분 잡학사전#6 - ep. 22~25

📌 오늘 TIL 3줄 요약

  • 램은 데이터가 저장된 위치와 상관없이 일정한 접근 속도를 보장함

  • 알고리즘과 자료구조는 하고자 하는 작업에 맞춰서 사용해야 함 - 잘못된 자료구조나 알고리즘을 선택하면 원하지는 않는 결과가 나오거나 비효율적이 될 수도 있음

  • 알고리즘의 속도는 Big-O 표기법으로 표기하며 알고리즘을 수행하기 위한 절차 수에 영향을 주는 요소로 평가함

📆 TIL (Today I Learned) 날짜

2023-12-14

📚 오늘 읽은 범위

에피소드 22~25

📝 책에서 기억하고 싶은 내용

  • 램은 데이터가 저장된 위치와 상관없이 일정한 접근 속도를 보장한다.
  • 알고리즘과 자료구조는 하고자 하는 작업에 맞춰서 선택해야 한다.

    • 예를 들어, 배열의 경우에는 배열의 맨 끝에만 저장하는 경우에는 굉장히 빠르다.

    • 하지만 만약 맨 앞에 위치한 데이터를 삭제하거나 맨 앞에 데이터를 삽입하려고 하면 최대 N-1 번의 작업이 필요하다.

    • {1, 2, 3, 4} 에서 1을 지우면 2, 3, 4를 앞으로 한 칸씩 옮겨야 함

    • {1, 2, 3, 4} 에서 맨 앞에 0을 삽입하려면 1, 2, 3, 4를 한 칸씩 미뤄야 함

  • 알고리즘의 속도를 표현하는 방법은 Big-O 표기법으로 알고리즘이 수행하는 최대 절차 수를 의미한다.
  • 선형 검색 알고리즘 O(N) 순차적으로 요소들에 접근하여 원하는 값을 찾음

  • 이진 검색 알고리즘 O(logN)

    • 정렬이 끝난 배열에만 사용 가능

    • 오름차순으로 정렬되어 있을 때 중간부터 시작해서 찾고자 하는 값이 크다면 오른쪽, 작다면 왼쪽으로 다시 검색

😀 오늘 읽은 소감 및 떠오르는 생각

  • 알고리즘과 자료구조 내용을 읽다보니 갑자기 업앤다운이 생각났다. 처음 이진탐색을 배울 때는 생각도 못했는데 이미 우리는 이진 검색 알고리즘을 자연스럽게 사용하고 있었던 것이다.

  • 알고리즘 문제를 풀다가 시간 초과로 계속 실패했던 경험이 있는데 그때 파이썬의 리스트를 사용하는데 맨 앞에 있는 값을 삭제하는 작업이 굉장히 빈번히 발생하는 문제여서 그랬었다. 그때부터 파이썬 기본 알고리즘들의 시간 복잡도나 구현체들의 특징들에 관심이 생겼었다. 역시 한 번 당해봐야 정신이 번쩍 드는 것 같다.

🔎 오늘 읽은 다른 사람의 TIL