자료구조 및 알고리즘/기본 자료구조

배열 vs 연결 리스트, 어떤 구조가 내 코드에 맞을까? - 코드카인 티스토리

CodeCaine Explorer 2025. 1. 2. 22:35
728x90
반응형
SMALL

안녕하세요😊 코드카인 여러분!

프로그래밍을 배우다 보면 "배열"과 "연결 리스트"라는 말을 많이 듣게 되는데요. 이 두 개념은 DATA 구조의 기초 중 하나로, DATA를 저장하고 관리하는 방법에서 중요한 역할을 합니다. 오늘은 이 두 가지의 차이점을 마치 책장과 연결된 마법의 책줄에 비유해서 쉽고 재미있게 설명해 드릴게요!


📚 배열: 깔끔한 책장처럼 정돈된 DATA 구조

배열은 책장이 가지런히 정렬된 칸과 비슷합니다.
각 칸은 고유한 번호(인덱스)를 가지고 있어서, 원하는 책(DATA)을 빠르게 꺼낼 수 있죠. 하지만, 책장이 고정된 크기를 가지기 때문에 새로운 책을 추가하려면 전체 책장을 갈아야 하는 번거로움이 있을 수 있습니다.

배열의 특징

  1. 고정된 크기
    배열을 만들 때 크기를 미리 정해야 해요. 마치 책장의 칸 수를 처음부터 정하는 것처럼요.
  2. 빠른 접근 속도
    배열은 특정 인덱스를 사용해 DATA를 바로 찾을 수 있어요. O(1)의 시간 복잡도를 가집니다.
  3. 비효율적인 삽입/삭제
    중간에 DATA를 추가하거나 삭제하려면 모든 DATA를 이동해야 해요. 마치 책 한 권을 넣으려고 나머지 책들을 다 옮기는 것처럼요.

🔗 연결 리스트: 마법의 책줄처럼 유연한 구조

연결 리스트는 마치 책들이 마법의 줄로 연결된 모습과 비슷합니다.
책장을 준비할 필요 없이, 새로운 책이 생기면 줄에 매달아 연결만 하면 되죠. 다만, 원하는 책을 찾으려면 처음부터 하나씩 살펴봐야 해서 시간이 조금 걸릴 수 있어요.

연결 리스트의 특징

  1. 유연한 크기
    DATA를 추가할 때 크기를 미리 정할 필요가 없어요. 새로운 책을 연결만 하면 되니까요.
  2. 느린 접근 속도
    원하는 DATA를 찾으려면 첫 번째 노드부터 순차적으로 확인해야 해요. O(n)의 시간 복잡도를 가집니다.
  3. 효율적인 삽입/삭제
    중간에 DATA를 추가하거나 삭제해도 나머지 DATA를 이동할 필요가 없어요. 원하는 위치에 줄만 연결하거나 끊으면 됩니다.

배열과 연결 리스트의 주요 차이점 한눈에 보기 😊

특징 배열 연결 리스트
크기 고정 동적
데이터 접근 빠름 (인덱스로 접근 가능) 느림 (순차 검색 필요)
삽입/삭제 비효율적 (데이터 이동 필요) 효율적 (연결만 수정)
메모리 구조 연속된 공간 비연속적인 공간

실전 코드 예제 비교하기 🚀

배열 예제

int[] array = new int[5]; // 크기 5인 배열 생성
array[0] = 10; // 첫 번째 칸에 데이터 저장
System.out.println(array[0]); // 출력: 10

연결 리스트 예제

class Node {
    int data;
    Node next;
    Node(int data) {
        this.data = data;
        this.next = null;
    }
}

Node head = new Node(10); // 첫 번째 노드 생성
head.next = new Node(20); // 두 번째 노드 연결
System.out.println(head.next.data); // 출력: 20

😊 초보자들을 위한 응원

"배열과 연결 리스트를 이해하면 프로그래밍의 기본기를 탄탄히 다질 수 있어요! 처음엔 조금 헷갈릴 수 있지만, 하나씩 연습하다 보면 꼭 마스터할 수 있습니다. 화이팅! 💪"


😊 마무리하며..

배열과 연결 리스트는 DATA를 어떻게 저장하고 관리할지 결정하는 중요한 도구입니다. 상황에 따라 적합한 자료구조를 선택하는 것이 효율적인 프로그램을 만드는 비결이에요.
다음에 더 재미있고 유익한 이야기로 돌아올게요! 😊

728x90
반응형
SMALL