프로그래밍/자료구조&알고리즘

    리스트는 사실 배열?(2/3) - 정적 배열과 동적 배열

    정적 배열 정적 배열은 크기가 고정되어 있는 배열이다 일반적으로 그냥 배열이라고 부르는 배열은 정적 배열이다 길이가 4인 배열에 값이 다 저장되어있는 상황 여기에 새로운 값 5를 넣고 싶으면 어떻게 해야 할까 길이가 5인 새로운 배열을 만들고 기존의 데이터들을 새로운 배열에 옮긴 뒤 5를 저장하면 된다 그런데 이는 너무 비효율적이다 그냥 배열 뒤에 넣으면 안 돼? 배열을 정의하게 되면 메모리에서 쓸 수 있는 공간을 찾아서 저장하려고 하는 데이터 타입과 저장하려는 데이터 수에 따라 연속적인 공간이 정해진다 우리는 배열 바로 뒷부분이 어떤 공간인지 모른다 사용해도 되는 공간인지 알 수 없기 때문에 배열 바로 뒤에 5를 추가하게 되면 위험하다 위험성을 예방하기 위해서 배열은 미리 공간을 고정해 놓는 것이다 그..

    리스트는 사실 배열?(1/3) - 배열과의 차이점

    리스트 파이썬 리스트는 사실 C의 배열을 이용해서 만들어졌다 이 이야기를 하기 전에 먼저 배열과 리스트의 차이부터 알아보자 배열과 리스트의 차이 배열은 크기가 고정되어 있으며 같은 타입의 데이터만 담을 수 있다 int형 배열을 만들고 배열에 값을 저장할 경우 데이터형의 크기만큼 메모리를 차지하며 값이 저장된다 배열은 값들이 실제 메모리에 저장되지만 리스트는 다르다 리스트는 값들이 아예 다른 곳에 저장되어 있을 수 있다 즉, 실제 값들이 연속적인 공간에 있을 수도 있고 아닐 수도 있다 리스트에는 실제 값들이 저장되어있는 것이 아니라 실제 값들에 대한 *레퍼런스가 저장되어 있는 것이다 그래서 리스트에는 다양한 타입의 값들을 저장하는 것이 가능한 것이다 레퍼런스란? 변수 x에 1을 저장했다고 하자 x = 1이..