📘배열(Array)
배열은 가장 기본적이고 중요한 자료구조 중 하나이다. 배열은 일정한 크기의 메모리 공간에 같은 타입의 데이터 요소들을 연속적으로 저장하는 구조이다. 배열의 각 요소는 인덱스(index)를 통해 접근할 수 있다.
📌배열의 특징
- 고정된 크기: 배열은 생성될 때 크기가 정해지며, 이후에는 크기를 변경할 수 없다.
- 연속적인 메모리 공간: 배열의 요소들은 메모리 상에서 연속적으로 배치된다. 즉, 배열의 첫 번째 요소가 저장된 위치를 기준으로 각 요소가 일정한 간격을 두고 저장된다.
- 같은 타입의 요소들: 배열의 모든 요소는 같은 데이터 타입을 가져야 한다. 예를 들어, 정수 배열에는 모두 정수형 데이터만 저장할 수 있다.
- 인덱스를 통한 접근: 배열의 요소들은 인덱스를 사용하여 접근할 수 있다. 인덱스는 0부터 시작하며, 배열의 크기 -1까지의 값을 가진다. 예를 들어, 크기가 5인 배열은 인덱스 0에서 4까지의 요소를 가진다.
📌배열의 장점
- 빠른 접근 속도: 배열은 인덱스를 사용하여 임의의 요소에 빠르게 접근 할 수 있다. 이는 배열의 특정 요소를 O(1) 시간 복잡도로 접근할 수 있다는 의미이다.
- 단순한 구현: 배열은 매우 단순한 자료구조로, 구현이 쉽고 직관적이다.
📌배열의 단점
- 고정된 크기: 배열의 크기가 고정되어 있어, 배열을 생성한 후에는 크기를 변경할 수 없다. 따라서 배열의 크기를 초과하는 데이터가 들어오면 새로운 배열을 만들어 데이터를 복사해야 한다.
- 비효율적인 삽입 및 삭제: 배열의 중간에 요소를 삽입하거나 삭제할 때는, 해당 위치 이후의 모든 요소를 이동시켜야 한다. 이는 O(n) 시간 복잡도가 소요된다.
📘배열 생성
✅Python
빈 배열 선언
arr = []
배열 생성
arr = [1,2,3,4,5]
배열 접근
print(arr[0]) // 출력 => 1
print(arr[4]) // 출력 => 5
배열 요소 변경
arr[2] = 10
print(arr) // 출력=> [1,2,10,4,5]
배열 반복문
for i in range(len(arr)):
print(arr[i])
2차원 배열
arr = [[1,2,3],[4,5,6],[7,8,9]]
2차원 배열 요소 접근
print(arr[0][1]) // 출력 => 2
✅Java
배열 선언
int[] arr = new int[5];
배열 값 할당
arr[0] = 1;
arr[1] = 2;
arr[2] = 3;
arr[3] = 4;
arr[4] = 5;
배열 선언과 초기화
int[] arr = {1,2,3,4,5};
배열 접근
System.out.println(arr[2]);
System.out.println(arr[4]);
배열 반복문
for문을 사용하여 배열의 모든 값을 출력
for (int i=0; i<arr.length; i++) {
System.out.println(arr[i]);
}
2차원 배열 선언과 초기화
int[][] arr = {{1,2,3},{4,5,6},{7,8,9}};
2차원 배열 요소 접근
System.out.println(arr[0][1]); 출력 => 2