Java 배열과 PCCP 시험 대비: 1차원, 2차원 배열부터 주요 함수까지
Java 배열은 동일한 데이터 타입의 여러 값을 저장할 수 있는 강력한 자료구조입니다. 특히 PCCP 시험에서는 배열의 기본 사용법부터 다양한 내장 함수와 메서드를 활용하는 문제가 자주 출제되는데요, 이번 포스트에서는 1차원 배열과 2차원 배열의 개념, 주요 내장 함수, 각 함수들의 시간복잡도, 그리고 자주 사용하는 배열 속성과 메서드들에 대해 정리해 보겠습니다.
1. Java 배열의 기본
1.1 1차원 배열
개념 및 선언:
1차원 배열은 연속된 메모리 공간에 데이터를 저장하며, 기본적인 목록 형태의 데이터를 처리할 때 사용합니다.
// 길이가 5인 정수형 배열 생성 및 초기화
int[] arr = {10, 20, 30, 40, 50};
특징:
- 배열의 길이는 배열 생성 시 결정되며 변경할 수 없습니다.
- 각 요소에 접근할 때는 인덱스(0부터 시작)를 사용합니다.
- 반복문(일반 for문, 향상된 for문)을 통해 배열을 순회할 수 있습니다.
1.2 2차원 배열
개념 및 선언:
2차원 배열은 "배열의 배열"로 생각할 수 있으며, 행과 열의 구조를 가지고 있습니다. 행렬 형태의 데이터를 다루거나 복잡한 구조를 구현할 때 유용합니다.
// 3행 4열의 2차원 배열 선언 및 초기화
int[][] matrix = {
{1, 2, 3, 4},
{5, 6, 7, 8},
{9, 10, 11, 12}
};
특징:
matrix.length
는 행의 수를 나타내고, 각 행의 길이는matrix[i].length
로 확인할 수 있습니다.- 2차원 배열은 다차원 배열의 기본으로, 3차원 이상의 배열도 선언이 가능하지만 복잡도가 증가합니다.
2. PCCP 시험 대비: 자주 사용하는 배열 관련 함수
Java에서는 배열을 효율적으로 다루기 위해 다양한 내장 함수와 메서드를 제공합니다. PCCP 시험에서는 이러한 함수들을 숙지하고 문제에 맞게 활용하는 것이 중요합니다.
2.1 java.util.Arrays 클래스
1. Arrays.sort(array):
- 용도: 배열 요소를 오름차순 또는 사용자 정의 기준으로 정렬합니다.
- 내부 구현:
- Primitive 배열: Dual-Pivot Quicksort (평균 O(n log n), 최악 O(n²))
- 객체 배열: TimSort (최악 O(n log n))
int[] arr = {5, 2, 8, 1, 3};
Arrays.sort(arr); // 정렬 후: [1, 2, 3, 5, 8]
2. Arrays.binarySearch(array, key):
- 용도: 정렬된 배열에서 이진 검색을 통해 특정 값의 인덱스를 찾습니다.
- 시간복잡도: O(log n)
int[] arr = {1, 2, 3, 5, 8};
int index = Arrays.binarySearch(arr, 5); // 3 return
3. Arrays.equals(array1, array2):
- 용도: 두 배열의 길이와 각 요소가 동일한지 비교합니다.
- 시간복잡도: O(n)
boolean isEqual = Arrays.equals(arr1, arr2);
4. Arrays.copyOf(array, newLength):
- 용도: 기존 배열을 새 배열에 복사합니다.
- 시간복잡도: O(n)
int[] copyArr = Arrays.copyOf(arr, arr.length);
5. Arrays.copyOfRange(array, from, to):
- 용도: 배열의 특정 범위를 복사하여 새로운 배열을 생성합니다.
- 시간복잡도: O(n)
int[] subArr = Arrays.copyOfRange(arr, 1, 4); // 인덱스 1부터 3까지 복사
6. Arrays.fill(array, value):
- 용도: 배열의 모든 요소를 지정된 값으로 채웁니다.
- 시간복잡도: O(n)
Arrays.fill(arr, 0); // 모든 요소가 0으로 채워짐
7. Arrays.toString(array) & Arrays.deepToString(array):
- 용도:
toString
: 1차원 배열을 보기 좋게 문자열로 변환합니다.deepToString
: 다차원 배열의 내부 배열까지 모두 문자열로 변환합니다.
- 시간복잡도: 각각 O(n), 다차원 배열의 경우 전체 요소 수에 비례하여 O(N)
System.out.println(Arrays.toString(arr)); // 1차원 배열 출력
System.out.println(Arrays.deepToString(matrix)); // 2차원 배열 출력
8. Arrays.asList(array):
- 용도: 배열을 List로 변환하여 컬렉션 프레임워크의 기능을 활용합니다.
- 특징: 반환된 List는 원본 배열을 참조하며, 크기 변경은 불가능합니다.
- 시간복잡도: O(1)
String[] fruits = {"apple", "banana", "cherry"};
List<String> fruitList = Arrays.asList(fruits);
2.2 System.arraycopy
용도:
- 배열의 일부 또는 전체를 다른 배열로 빠르게 복사합니다.
- 네이티브 메서드로 구현되어 있어 반복문보다 높은 성능을 보입니다.
시간복잡도:
- 복사할 요소의 수에 비례하여 O(n)
int[] src = {1, 2, 3, 4, 5};
int[] dest = new int[5];
System.arraycopy(src, 0, dest, 0, src.length);
3. 자주 사용하는 배열 속성과 메서드
3.1 배열의 길이: arr.length
- 용도: 배열에 저장된 요소의 개수를 반환하는 속성입니다.
- 특징:
- 속성이므로 호출 시 괄호를 사용하지 않습니다.
- 2차원 배열의 경우,
matrix.length
는 행의 수,matrix[i].length
는 해당 행의 열의 수를 나타냅니다.
int[] arr = {10, 20, 30, 40, 50};
int size = arr.length; // size는 5
3.2 배열 복제: arr.clone()
- 용도: 배열의 얕은 복사(shallow copy)를 생성하여 새 배열을 반환합니다.
- 특징:
- 기본 자료형 배열과 객체 배열 모두에서 사용 가능하며, 객체 배열은 객체 참조만 복사됩니다.
int[] original = {1, 2, 3};
int[] copy = original.clone();
3.3 배열 반복 접근
기본 for문을 이용한 접근:
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
향상된 for문을 이용한 접근:
for (int element : arr) {
System.out.println(element);
}
4. 정리 및 시험 대비 팁
핵심 개념:
- 1차원 배열은 단순 목록, 2차원 배열은 행과 열 구조를 가지며 각각의 활용 목적에 맞게 사용됩니다.
주요 함수 숙지:
- PCCP 시험에서는
Arrays.sort
,Arrays.binarySearch
,Arrays.copyOf
등 배열을 조작하는 함수들이 자주 출제됩니다. 각 함수의 사용법과 내부 시간복잡도를 이해하는 것이 중요합니다.
- PCCP 시험에서는
코드 연습:
- 실제 코드 작성과 다양한 문제 풀이를 통해 배열과 관련된 내장 함수들의 활용 능력을 높이면, 시험에서 빠르게 문제를 해결할 수 있습니다.
Java 배열과 관련된 다양한 기능들을 잘 숙지하면, PCCP 시험 뿐만 아니라 실제 프로그래밍에서도 효율적인 코드 작성이 가능해집니다. 이번 포스트가 여러분의 학습과 시험 준비에 도움이 되기를 바랍니다!
Happy Coding!
'PCCP' 카테고리의 다른 글
[PCCP] JAVA StringBuilder (0) | 2025.04.19 |
---|---|
[PCCP] JAVA Character (0) | 2025.04.19 |
[PCCP] JAVA String (0) | 2025.04.19 |
[PCCP] Java 숫자형 타입과 실수의 정수 여부 판별 방법 정리 (0) | 2025.04.08 |
[PCCP] 시간복잡도 (0) | 2025.04.06 |