패스트캠퍼스 환급챌린지 10일차 : 딥러닝·인공지능 Signature 초격차 패키지 강의 후기
본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다.
강의 수강 시작
강의 수강 완료
학습 인증샷
오늘은 배열에 대한 강의를 들었다. 배열은 가장 기본적인 자료구조로, 여러 개의 변수를 담을 수 있는 공간이다. 배열은 메인 메모리에 연속적으로 할당되며, 인덱스를 통해 요소에 접근할 수 있다. 이때 인덱스는 1이 아닌 0부터 시작하는 특징이 있다.
배열의 가장 큰 장점은 조회 속도가 빠르다는 것이다. 연속된 메모리 공간에 저장되기 때문에 CPU 캐시에 데이터를 한꺼번에 올릴 수 있어 캐시 히트 가능성이 높아진다. 캐시 히트란 원하는 데이터가 캐시 메모리에 존재하여 빠르게 조회할 수 있는 경우를 의미한다. 이러한 특성 덕분에 배열은 데이터 조회 시 시간복잡도를 가지며, 매우 효율적으로 동작한다.
하지만 배열은 크기가 고정되어 있으며, 중간에 새로운 데이터를 추가하거나 삭제하는 것이 어렵다. 만약 배열의 중간에 요소를 삽입하려면, 기존의 요소들을 한 칸씩 이동시켜야 하므로 더 많은 시간이 소요된다. 따라서 배열은 조회 속도는 빠르지만, 데이터 추가 및 삭제가 비효율적인 단점이 있다.
반면, 연결 리스트는 배열과 달리 메모리에 연속적으로 저장되지 않는다. 각 원소가 데이터와 함께 다음 원소의 주소를 저장하고 있기 때문에, 필요할 때마다 동적으로 크기를 조정할 수 있다. 즉, 배열처럼 미리 크기를 정해둘 필요 없이 계속해서 데이터를 추가할 수 있는 유연성을 가진다.
그러나 연결 리스트는 인덱스를 사용하지 않기 때문에 원하는 데이터를 찾으려면 앞에서부터 차례대로 탐색해야 한다. 즉, 배열처럼 시간 안에 원하는 요소를 찾을 수 없고 시간이 걸린다. 이러한 특성 때문에 연결 리스트는 삽입과 삭제에는 강점이 있지만, 조회 성능은 배열보다 떨어진다.
파이썬에서는 리스트가 배열과 연결 리스트의 특성을 모두 가지며, 필요할 때 자동으로 크기를 키울 수도 있다. 다만, 내부적으로 포인터를 활용하는 방식은 아니므로, 일반적인 연결 리스트의 구조와는 차이가 있다. 또한, 파이썬의 리스트는 큐 기능을 제공하지 않기 때문에, 큐를 사용할 때는 별도의 큐 자료구조를 구현하는 것이 더 효율적이다.
리스트를 활용할 때는 리스트 컴프리헨션을 사용하면, 원하는 데이터를 보다 간결하게 배열에 담을 수 있다. 이를 활용하면 가독성이 높아지고 실행 속도도 빨라지는 장점이 있다.