📗 Docs
배열(Array)
파일과 미디어
date
Apr 14, 2023
slug
Algorithm-Array
author
status
Public
tags
Algorithm
Java
summary
Array 기본 개념 정리
type
Post
thumbnail
category
📗 Docs
updatedAt
Apr 13, 2023 05:28 PM
배열(Array)
- 많은 수의 데이터를 다룰 때 사용하는 자료 구조
- 각 데이터를 인덱스와 1:1 대응 하도록 구성
- 데이터가 메모리 상에 연속적으로 저장

배열의 장점
- 인덱스를 이용하여 데이터에 빠르게 접근 가능

배열의 단점
- 데이터의 추가/삭제가 번거로운 편
- 미리 최대 길이를 정해서 생성해야 함
- 가변 길이 배열은 배열의 크기를 변경할 때마다 새로운 배열을 생성
- 데이터 삭제 시 인덱스를 유지하기 위해 빈 공간 유지

배열 선언/할당
// 1차원 배열
int[] arr = {1,2,3,4,5};
// 2차원 배열
int[][] arr2 = {{1,2,3,},{4,5,6},{7,8,9}}
// Arraylist - 1차원, 2차
ArrayList list2d = new ArrayList();
ArrayList list1d1 = new ArrayList(Arrays.asList(1, 2, 3));
ArrayList list1d2 = new ArrayList(Arrays.asList(4, 5, 6));
list2d.add(list1d1);
list2d.add(list1d2);
배열 데이터 삽입 및 삭제
// 배열에 데이터 삽입
public void insertData(int index, int data) {
if (index < 0 || index > this.arr.length) {
System.out.println("Index Error");
return;
}
int[] arrDup = this.arr.clone();
this.arr = new int[this.arr.length + 1];
for(int i = 0; i < index; i++){
this.arr[i] = arrDup[i];
}
for(int i = index + 1; i < this.arr.length; i++){
this.arr[i] = arrDup[i-1];
}
this.arr[index] = data;
}
// 배열에서 특정 데이터 삭제
public void removeData(int data) {
int targetIndex = -1;
for (int i = 0; i < this.arr.length; i++) {
if (this.arr[i] == data) {
targetIndex = i;
break;
}
}
if (targetIndex == -1) {
System.out.println("해당 데이터가 없습니다.");
} else {
int[] arrDup = this.arr.clone();
this.arr = new int[this.arr.length - 1];
for (int i = 0; i < targetIndex; i++) {
this.arr[i] = arrDup[i];
}
for (int i = targetIndex + 1; i < this.arr.length; i++) {
this.arr[i] = arrDup[i + 1];
}
}
}