자료구조

자료구조 - 배열

tita 2024. 6. 6. 14:00

[배열 (Array) ]

배열은 동일한 데이터 타입의 요소들이 연속된 메모리 공간에 저장된 데이터 구조입니다. 배열의 각 요소는 인덱스를 사용하여 접근할 수 있으며, 인덱스는 0부터 시작합니다. 배열은 고정된 크기를 가지며, 한 번 선언되면 크기를 변경할 수 없습니다.

 

장점

  • 연속된 메모리 배치로 인해 인덱스를 사용한 접근 속도가 빠릅니다.
  • 데이터를 일괄적으로 처리하기에 용이합니다.

단점

  • 크기가 고정되어 있어 유연성이 부족합니다.
  • 삽입 및 삭제 작업이 비효율적입니다.

 

코드 예시를 통해 배열의 선언, 초기화와 접근에 대해 알아보겠습니다.

#include <iostream>

int main() 
{
    // 배열 선언 및 초기화
    int arr[5] = {10, 20, 30, 40, 50};

    // 배열 요소 접근 및 출력
    std::cout << "배열의 요소: ";
    for (int i = 0; i < 5; ++i) 
    {
        std::cout << arr[i] << " ";
    }
    std::cout << std::endl;

    // 배열 요소 변경
    arr[2] = 100;
    std::cout << "변경된 배열의 요소: ";
    for (int i = 0; i < 5; ++i) 
    {
        std::cout << arr[i] << " ";
    }
    std::cout << std::endl;

    return 0;
}

 

 

 

 

 

[1차원 배열 (One-Dimensional Array) ]

1차원 배열은 단일 인덱스를 사용하여 요소에 접근할 수 있는 배열입니다. 배열의 요소들은 메모리에서 연속적으로 배치되며, 각 요소는 동일한 데이터 타입을 가집니다. 1차원 배열은 리스트나 벡터와 유사한 구조를 가집니다.

 

장점

  • 간단하고 직관적이며, 선언과 초기화가 쉽습니다.
  • 인덱스를 사용한 요소 접근 속도가 빠릅니다.

 

단점

  • 크기가 고정되어 있어 유연성이 부족합니다.
  • 삽입 및 삭제 작업이 비효율적입니다.

위의 배열 코드 예시가 1차원 배열과 동일합니다.

 

 

[2차원 배열 (Two-Dimensional Array) ]

2차원 배열은 행(row)과 열(column)을 가지는 배열로, 테이블이나 행렬과 유사한 구조를 가집니다. 2차원 배열은 두 개의 인덱스를 사용하여 요소에 접근할 수 있습니다. 첫 번째 인덱스는 행을, 두 번째 인덱스는 열을 나타냅니다.

 

장점

  • 행렬, 테이블, 그래프 등 다양한 데이터 구조를 표현하는 데 유용합니다.
  • 직관적인 데이터 배치와 접근이 가능합니다.

단점

  • 메모리 사용량이 증가할 수 있습니다.
  • 초기화가 번거로울 수 있습니다.

 

코드 예시를 통해 2차원 배열의 선언, 초기화와 접근을 알아보겠습니다.

#include <iostream>

int main()
{
    // 2차원 배열 선언 및 초기화
    int arr[3][4] = 
    {
        {1, 2, 3, 4},
        {5, 6, 7, 8},
        {9, 10, 11, 12}
    };

    // 2차원 배열 요소 접근 및 출력
    std::cout << "2차원 배열의 요소:" << std::endl;
    for (int i = 0; i < 3; ++i)
    {
        for (int j = 0; j < 4; ++j)
        {
            std::cout << arr[i][j] << " ";
        }
        std::cout << std::endl;
    }

    // 2차원 배열 요소 변경
    arr[1][2] = 100;
    std::cout << "변경된 2차원 배열의 요소:" << std::endl;
    for (int i = 0; i < 3; ++i) 
    {
        for (int j = 0; j < 4; ++j) 
        {
            std::cout << arr[i][j] << " ";
        }
        std::cout << std::endl;
    }

    return 0;
}

 

 

 

 

[1차원 배열과 2차원 배열의 차이점]

  • 구조: 1차원 배열은 단일 인덱스를 사용하여 요소에 접근하는 반면, 2차원 배열은 두 개의 인덱스를 사용하여 요소에 접근합니다.
  • 데이터 표현: 1차원 배열은 리스트나 벡터와 유사한 구조를 가지며, 2차원 배열은 테이블이나 행렬과 유사한 구조를 가집니다.
  • 메모리 사용: 2차원 배열은 1차원 배열보다 메모리 사용량이 많을 수 있습니다.