Last updated
Last updated
변수
메모리 내 데이터 위치(or 주소)를 표현하는 이름
프로그램 실행 중 변경되는 정보를 추적할 수 있게 한다
변수가 없으면 프로그램의 내부 상태를 추적, 평가(evalutate), 변경(update)할 수 없다
충분한 정보가 포함된 이름을 사용하는 것이 중요하다
복합 자료 구조
여러 개별 변수를 한 그룹으로 엮은 구조체(struct)나 객체(object)가 속한다
관련 있는 데이터 조각을 한데 모아서 한꺼번에 전달할 수 있게 한다
자신의 데이터나 작동에 대한 함수를 모두 포함하는 객체가 될 수 있다
배열
관련된 다수의 값을 저장할 때 사용한다
배열의 구조는 위치(or 인덱스)를 지정하여 배열 내 개별 값인 원소(element)에 접근할 수 있게 해준다
배열 내 원소들은 메모리에서 서로 인접해 있으므로, offset을 계산해서 해당하는 위치의 메모리를 읽는 방식으로 접근할 수 있다
배열을 전체적으로 바꾸려면 모든 상자를 하나하나 바꿔야 한다
삽입 정렬
배열의 값을 정렬하는 알고리즘으로, 순서를 정할 수 있는 모든 유형의 값에서 작동한다
배열의 일부를 정렬하고, 정렬된 범위를 전채 배열이 정렬될 때까지 확장한다
정렬되지 않은 배열의 각 원소를 반복하면서 정렬된 부분의 올바른 위치로 이동한다
e.g.
단점
최악의 경우 알고리즘의 비용은 시퀀스 원소 수의 제곱에 비례한다 → O(n²)
문자열
특수한 종류의 배열로 생각할 수 있는, 순서가 지정된 문자의 리스트다
문자열의 각 칸에는 문자, 숫자, 기호, 공백 또는 제한된 특수 기호 중 하나가 포함된다
마지막 칸에 있는 특수 기호 /
는 종종 문자열의 끝을 나타낸다
인덱스를 사용하여 문자열의 문자에 직접 접근할 수 있다
일부 프로그래밍 언어에서는 문자열을 그냥 문자 배열로 구현하고, 몇몇 다른 언어에서는 문자열이 객체일 수 있다
Python에서는 문자열이 immutable obejct 라서 한 번 생성된 문자열은 변경할 수 없다!
문자열의 동등성 검사
한 번의 연산으로 직접 비교할 수 있는 정수와 달리, 문자열은 각 문자를 반복하면서 비교해야 한다
문자열 비교에서 최악의 경우 계산 비용은 문자열의 길이에 비례해 증가한다
Python 에서는 직접 비교할 수 있는 문자열 클래스를 제공한다
e.g.
Python의 Operator overloading: __eq__
, __lt__
, __gt__
객체 간 비교 연산(e.g. ==
, <
, >
)을 수행할 때 호출됨
Python의 str
클래스
이미 __eq__
, __lt__
, __gt__
등 비교 연산 메서드를 구현하고 있어서, 문자열을 별도의 사용자 정의 클래스 없이도 직접 비교 가능함
내용이 많지 않아서 좋았다
기초를 다지기 좋은 책인 것 같다