Topic

배열(Array)

JackerLab 2025. 3. 29. 15:54
728x90
반응형

개요

배열(Array)은 같은 타입의 데이터를 메모리상에 연속적으로 저장하는 자료구조로, 프로그래밍에서 가장 기본적이면서도 핵심적인 구조 중 하나다. 인덱스를 기반으로 요소에 빠르게 접근할 수 있으며, 리스트, 행렬, 문자열 등 다양한 형태로 확장되어 활용된다. 정렬, 탐색, 해싱, 동적 프로그래밍 등 거의 모든 알고리즘에서 필수적으로 사용된다.


1. 개념 및 정의

항목 설명
정의 같은 데이터 타입을 가지는 원소들이 메모리상에 연속적으로 배치된 구조
인덱스 0부터 시작하는 정수로, 각 원소에 접근하는 주소 역할
특징 빠른 접근 속도 (인덱스 기반), 고정된 크기 (정적 배열 기준)

2. 배열의 특징

항목 설명
시간 복잡도 (접근) O(1) (arr[i]로 바로 접근 가능)
시간 복잡도 (삽입/삭제) O(n) (중간에 삽입/삭제 시 전체 이동 필요)
공간 효율성 높음 (정해진 크기만큼 연속 메모리 할당)
타입 일관성 정적 배열은 동일 타입만 저장 (C, Java 등)

3. 배열의 종류

유형 설명 예시
1차원 배열 선형 구조 [1, 2, 3, 4, 5]
2차원 배열 행렬 구조 [[1, 2], [3, 4]]
다차원 배열 텐서 등 고차원 구조 [[[1], [2]], [[3], [4]]]
동적 배열 크기가 가변적인 배열 구조 (Python 리스트 등) list.append() 가능

4. 배열 관련 연산 예시 (Python)

arr = [10, 20, 30, 40, 50]
print(arr[2])  # 30
arr.append(60)  # 삽입
arr.pop(1)  # 삭제: 20 제거
arr[3] = 100  # 수정
print(arr)  # [10, 30, 40, 100, 60]

5. 배열과 리스트 차이점 (Python 기준)

항목 배열 (array 모듈) 리스트 (list)
타입 제한 동일 타입만 허용 다양한 타입 가능
메모리 효율 높음 낮음
속도 더 빠름 (일반적으로) 다기능 제공
유연성 낮음 높음 (append, remove 등)

6. 배열의 장단점

구분 장점 단점
접근 속도 O(1) 인덱싱으로 매우 빠름 삭제/삽입이 느림 (O(n))
공간 사용 연속 메모리로 공간 효율 높음 크기 변경 불가 (정적 배열)
구현 단순성 사용법 직관적 중간 삽입/삭제에 불리

7. 활용 분야

분야 활용 예시
알고리즘 정렬, 탐색, DP 테이블 구성
수학 행렬, 벡터 표현
컴퓨터 그래픽스 이미지 픽셀 데이터 저장
데이터베이스 고정 길이 레코드 저장
머신러닝 텐서 연산, NumPy 배열 처리

8. 결론

배열은 모든 프로그래밍 언어에서 가장 기초적이고 핵심적인 자료구조로, 빠른 인덱스 접근과 정형화된 데이터 처리를 가능하게 한다. 크기가 고정된 단점이 있지만, 리스트/벡터 등으로 확장되어 다양한 문제에 사용된다. 알고리즘을 공부하거나 구현하는 데 있어 배열의 이해는 필수적이다.

728x90
반응형

'Topic' 카테고리의 다른 글

스택(Stack)  (0) 2025.03.29
Linked List(연결 리스트)  (0) 2025.03.29
동적 계획법(Dynamic Programming, DP)  (0) 2025.03.29
백트래킹(Backtracking) 알고리즘  (0) 2025.03.29
그리디(Greedy) 알고리즘  (0) 2025.03.29