배열(ArrayList) 배열은 쌍의 집합으로, 같은형의 변수를 여러 개 담을 수 있는 자료구조이다. 1차원 배열과 2차원 배열 등 여러 차원이 존재할 수 있다. 한 번 선언된 배열의 정적인 메모리 크기로 인한 문제를 해결하기 위해 동적 배열이 등장하였다. 동적 배열의 원리는 데이터가 추가되면서 메모리가 꽉 차면 메모리의 크기를 보통 2배를 늘려주고 데이터들을 모두 복사하는 방법으로, 이를 더블링(Doubling)이라고 한다. 특징 인덱스를 이용하므로 배열 내 요소의 탐색은 O(1)의 시간복잡도를 가진다. 배열의 데이터의 삽입과 삭제 시 데이터의 이동이 빈번하게 발생한다. 데이터의 삽입과 삭제에서의 시간복잡도는 최선의 경우 O(1), 최악의 경우 O(n)을 가진다. 고정된 크기의 저장공간이므로 할당된 크..