1 minute read

자료 구조란?

데이터를 저장하고 관리하기 위한 구조를 말한다.
데이터의 효율적인 접근 및 조작을 가능하게 해주는 저장 및 관리 방식이다.

자료 구조의 목적은 자료를 구조화해서 데이터를 효율적으로 사용하기 위함이다.

컴퓨터가 데이터를 저장하는 방법

스토리지 vs 메모리

데이터가 저장되는 곳은 스토리지와 메모리로 나뉜다.

스토리지는 데이터가 영구적으로 저장되는 곳이다.
데이터를 저장하고 받아오는 데 오래 걸린다.
정확히 언제 사용할지 모르겠는 파일을 저장한다.

메모리는 데이터가 임시로 저장되는 곳이다.
데이터를 자정하고 받아오는 데 빠르다.

자료 구조는 데이터를 메모리에서 잘 사용하도록 하는 것이 목적이다.

RAM(Random Access Memory)

x = 95  
y = True 

메모리의 어딘가에 95와 True가 저장된다.

RAM은 임의 접근 메모리인데 임의 접근은 저장 위치를 알면 접근할 때 항상 일정한 시간이 걸린다.
메모리의 어떤 주소에 있든지 간에 일정한 시간이 걸리니 메모리에 저장한 데이터 접근 시간 복잡도는 O(1)이다.

비디오 테이프같은 장치는 저장된 위치까지 가는데 한 단계씩 거쳐야 하는 순차 접근을 한다.

임의 접근이 압도적으로 빠르다.

레퍼런스

x = 95 95정수값을 변수 x에 지정한다.
변수 x는 95가 저장된 메모리 주소를 가지게 된다.
x는 95를 가리키는 것이다.
이렇게 데이터에 접근하게 해주는 값을 레퍼런스라고 한다.
실제 주소보다는 데이터를 접근할 수 있게 도와주는 것을 포괄적으로 표현하는 것이다.

x + 5를 하면 레퍼런스에 5를 더하는 것이 아니라 실제로 변수를 사용할 때는 파이썬 자체적으로 저장된 값을 알아서 받아온다.

데이터의 주소

id함수를 사용해 저장한 데이터의 메모리 주소를 확인할 수 있다.

a = 1  
b = 2  
print(id(a))  
print(id(b))  

두 값이 다르게 나올 것이다. 여기서

c = a  

a가 가리키는 것을 c가 가리키게 하고 주소를 확인하면 a와 c의 주소가 같을 것이다.
이렇게 여러 변수가 같은 메모리를 가리키는 것을 aliasing이라고 한다.

Leave a comment