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
반응형