Dazzling 개발 노트

[코드트리] 배열의 이해 본문

Algorithm/코드트리

[코드트리] 배열의 이해

dj._.dazzling 2023. 12. 20. 23:58

[코드트리] 배열의 이해

Java에서 배열을 선언하기 위해서는 다음과 같이 선언했었습니다.

int[] a = new int[100];
 

이렇게 선언하여 만들어지는 배열을 정적 배열이라고 부릅니다. 정적 배열의 경우에는 배열의 선언과 동시에 그 크기를 정해줘야 하며, 한번 선언된 이후부터는 크기를 바꿀 수 없습니다.

하지만 자주 길이가 바뀌는 경우라면, 명확히 메모리를 낭비하고 있는 것이 아닐까요?
이러한 문제를 해결하기 위해 나온 것이 바로 동적 배열입니다.

동적 배열은 자유롭게 길이가 줄어들고 늘어날 수 있습니다. 즉, 정확히 사용하고 싶은 만큼만 공간을 차지하여 사용하는 방식입니다.

 

동적 배열에서 삽입, 삭제, 탐색하는 과정은 모두 정적 배열과 동일하기 때문에 시간복잡도는 완전히 일치하지만, 메모리를 필요한 만큼만 사용한다는 차이가 있습니다.

Java에서는 동적 배열을 ArrayList를 이용하여 표현할 수 있습니다. ArrayList를 사용하기 위해서는 import java.util.ArrayList 와, ArrayList<T> name = new ArrayList<>(); 형태의 선언이 필요합니다. T는 타입으로, 동적 배열 안에 들어갈 원소의 타입을 적어줘야 합니다. 이때 타입은 꼭 reference type이어야만 합니다.

정수를 관리할 동적배열은 다음과 같이 선언해 볼 수 있습니다.

import java.util.ArrayList;

public class Main {
	public static void main(String[] args) {
		ArrayList<Integer> v = new ArrayList<>();
	}
}
 

ArrayList를 이용할 때 자주 사용되는 것은 다음 4가지 입니다.

  1. add(E)

맨 뒤에 데이터 E를 추가합니다.

  1. remove(index)

index 위치에 있는 원소를 삭제합니다. 첫 번째 원소의 경우 remove(0), 맨 뒤에 있던 데이터를 삭제하기 위해서는 remove(name.size() - 1) 이 필요합니다.

  1. size()

현재 ArrayList에 들어있는 데이터의 수를 반환합니다.

  1. get(index)

index 위치에 있는 원소를 조회합니다.

 

참고