본문 바로가기

Posts/CS

파이썬으로 공부하는 자료구조

반응형

자료구조란?

CodeIt 자료구조 수업을 정리한 내용입니다.


자료구조

우리가 데이터저장하고 관리하기 위한 구조입니다.

예를 들어 서점에서 개발책을 찾으려 할때 IT 구역으로 가서 언어별 또는 기술별 카테고리를 찾아서 책을 찾는 것과 비슷한 개념입니다.

늘 정해진 규칙속에 분리하여 정리를 해놓으면 그만큼 자료를 찾기도 쉽기 때문에

자료구조도 이러한 원리로 데이터의 효율적 접근 및 조작을 위한 저장 및 관리 방식으로 이해하면 쉽습니다.


데이터가 저장되는 곳

스토리지
  • 데이터가 영구적 저장
  • 데이터를 저장 or 받아오는데 시간이 느림
  • 언제 사용할지 모르는 파일 저장
메모리
  • 데이터를 임시 저장
  • 문서 파일을 작성시는 메모리에 임시저장된 상태, 저장버튼을 눌렀을시 스토리지에 저장
  • 데이터를 저장 or 받아오는데 시간이 빠름
스토리지 & 메모리 2가지를 사용하는 이유

영화 파일이나 큰 용량의 파일을 실행시켰을 때 스토리지에서 데이터를 받아온다면

스토리지 특성상 저장과 시간이 느리기 때문에 실시간으로 가져온다면 끊기는 현상이 발생하게 됩니다.

이런 단점을 보완하기 위해 메모리를 활용하게 됩니다. 스토리지에 있는 파일을 메모리에 복사하여 메모리에 데이터를 받아오면서

실시간으로 끊기지 않고 쾌적하게 파일을 실행시킬 수 있습니다.

실행시킨 파일을 종료하면 메모리에 복사된 데이터는 제거되고 스토리지에만 남아있게 됩니다.


자료구조의 목적

  • 자료를 구조화
  • 데이터를 효율적으로 사용하기 위해
  • 데이터를 메모리에서 잘 사용하기 위해

메모리

  • 주소값의 성격을 가진 하나의 띠
  • 일정한 칸으로 나뉘어져 있다
  • 각 칸에 데이터 저장 가능
  • 각 칸은 주소값을 가짐
  • 메모리 한 칸이 저장할 수 있는 용량 단위는 1 byte
    • 1kb -> 1,000, byte
    • 10mb -> 1,000,000 byte
    • 1gb -> 1,000,000,000 byte

RAM

Random Access Memory (임의접근 메모리)

임의 접근
  • 저장 위치를 알면 접근시 항상 일정한 시간이 소요
    • 메모리는 어떤 주소값이던 한번에 찾을 수 있다는 의미 (시간복잡도 O(1))
순차 접근
  • 저장 위치까지 가는데 n번의 단계를 진행해야 하기 때문에 데이터가 클수록 느려짐

레퍼런스

  • 데이터에 접근할 수 있게 하는 값
  • "주소" 개념보다 더 포괄적 표현
  • 자료 구조 학습시 주소와 레퍼런스는 같은 개념으로 이해해도 무방
# python

# x는 95다의 의미보다 x가 저장된 메모리 주소를 바라보는 것이 옳은 표현
x = 95 

# 파이썬이 주소에 저장된 값을 가져와서 계산 
print(x + 5) 

Python id 함수

저장한 데이터의 메모리 주소를 정수로 표현한 값을 나타내는 함수입니다.

함수를 실행시 각각 다른 메모리 주소에 저장되어 있는것을 확인할 수 있으며 주소는 늘 실행할 때 마다 다르게 나옵니다.

같은 주소

예를 들어 하나의 리스트를 변수에 담아 다른 변수에 해당 리스트 변수를 할당시킨다면 그 두 변수는 같은 주소값을 가지게 됩니다.

test_list1 = [1,2,3,4,5]
test_list2 = test_list1

print(id(test_list1)) # 140507931554272
print(id(test_list2)) # 140507931554272
반응형