CS 기초 · 기초
배열(Array)과 연결 리스트(Linked List)의 차이점과 사용 상황에 대해 설명해주세요.
힌트 · 메모리 구조, 삽입/삭제, 접근 시간 복잡도를 비교해보세요.
연속적인 메모리포인터임의 접근삽입/삭제메모리 효율
모범답안
배열과 연결 리스트는 데이터를 저장하는 기본적인 자료구조이지만, 메모리 구조와 사용 방식에 차이가 있습니다.
배열은 메모리 상에 연속적으로 데이터를 저장합니다. 덕분에 인덱스를 통해 특정 위치의 데이터에 빠르게 접근(임의 접근)할 수 있다는 장점이 있습니다. 하지만, 배열의 크기를 미리 정해야 하고, 중간에 데이터를 삽입하거나 삭제할 때 다른 데이터들을 이동시켜야 하므로 비효율적일 수 있습니다.
반면, 연결 리스트는 각 데이터가 포인터를 통해 다음 데이터를 가리키는 방식으로 연결됩니다. 데이터들이 메모리 상에 흩어져 있어도 상관없고, 삽입/삭제 시 포인터만 변경하면 되므로 효율적입니다. 하지만, 특정 위치의 데이터에 접근하려면 처음부터 순차적으로 탐색해야 하므로 배열보다 접근 속도가 느립니다.
어떤 자료구조를 선택할지는 상황에 따라 다릅니다. 데이터 접근이 잦고 삽입/삭제가 거의 없다면 배열이 유리하고, 삽입/삭제가 빈번하게 일어난다면 연결 리스트가 더 나은 선택일 수 있습니다.
읽었다면, 이제 직접 답해볼 차례예요
패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.