Skip to content

Latest commit

 

History

History
67 lines (58 loc) · 3.64 KB

01_메모리_안_정보.md

File metadata and controls

67 lines (58 loc) · 3.64 KB

Chapter 1: 메모리 안 정보

내용 정리

  • 변수
    • 메모리 내 데이터 위치(or 주소)를 표현하는 이름
    • 프로그램 실행 중 변경되는 정보를 추적할 수 있게 한다
      • 변수가 없으면 프로그램의 내부 상태를 추적, 평가(evalutate), 변경(update)할 수 없다
    • 충분한 정보가 포함된 이름을 사용하는 것이 중요하다
  • 복합 자료 구조
    • 여러 개별 변수를 한 그룹으로 엮은 구조체(struct)나 객체(object)가 속한다
    • 관련 있는 데이터 조각을 한데 모아서 한꺼번에 전달할 수 있게 한다
    • 자신의 데이터나 작동에 대한 함수를 모두 포함하는 객체가 될 수 있다
  • 배열
    • 관련된 다수의 값을 저장할 때 사용한다
    • 배열의 구조는 위치(or 인덱스)를 지정하여 배열 내 개별 값인 원소(element)에 접근할 수 있게 해준다
      • 배열 내 원소들은 메모리에서 서로 인접해 있으므로, offset을 계산해서 해당하는 위치의 메모리를 읽는 방식으로 접근할 수 있다
    • 배열을 전체적으로 바꾸려면 모든 상자를 하나하나 바꿔야 한다
  • 삽입 정렬
    • 배열의 값을 정렬하는 알고리즘으로, 순서를 정할 수 있는 모든 유형의 값에서 작동한다

    • 배열의 일부를 정렬하고, 정렬된 범위를 전채 배열이 정렬될 때까지 확장한다

    • 정렬되지 않은 배열의 각 원소를 반복하면서 정렬된 부분의 올바른 위치로 이동한다

    • e.g.

      # Time Complexity: O(n²) / Space Complexity: O(1)
      
      from typing import List
      
      def insertion_sort(arr: List[int]) -> List[int]:
          n = len(arr)
          if n <= 1:
              return arr
          
          for i in range(1, n):
              key = arr[i]
              j = i - 1
              while j >= 0 and arr[j] > key:
                  arr[j + 1] = arr[j]
                  j -= 1
              arr[j + 1] = key
          return arr
    • 단점

      • 최악의 경우 알고리즘의 비용은 시퀀스 원소 수의 제곱에 비례한다 → O(n²)
  • 문자열
    • 특수한 종류의 배열로 생각할 수 있는, 순서가 지정된 문자의 리스트다
    • 문자열의 각 칸에는 문자, 숫자, 기호, 공백 또는 제한된 특수 기호 중 하나가 포함된다
      • 마지막 칸에 있는 특수 기호 / 는 종종 문자열의 끝을 나타낸다
    • 인덱스를 사용하여 문자열의 문자에 직접 접근할 수 있다
    • 일부 프로그래밍 언어에서는 문자열을 그냥 문자 배열로 구현하고, 몇몇 다른 언어에서는 문자열이 객체일 수 있다
      • Python에서는 문자열이 immutable obejct 라서 한 번 생성된 문자열은 변경할 수 없다!
    • 문자열의 동등성 검사
      • 한 번의 연산으로 직접 비교할 수 있는 정수와 달리, 문자열은 각 문자를 반복하면서 비교해야 한다
      • 문자열 비교에서 최악의 경우 계산 비용은 문자열의 길이에 비례해 증가한다
      • Python 에서는 직접 비교할 수 있는 문자열 클래스를 제공한다
        • e.g.
          • Python의 Operator overloading: __eq__, __lt__, __gt__
            • 객체 간 비교 연산(e.g. ==, <, >)을 수행할 때 호출됨
          • Python의 str 클래스
            • 이미 __eq__, __lt__, __gt__ 등 비교 연산 메서드를 구현하고 있어서, 문자열을 별도의 사용자 정의 클래스 없이도 직접 비교 가능함

느낀점

  • 내용이 많지 않아서 좋았다
  • 기초를 다지기 좋은 책인 것 같다