728x90
반응형
1. 배열이란 무엇인가
- 많은 수의 데이터를 다룰 때 사용하는 자료구조
- 각 데이터를 인덱스와 1:1 대응하도록 구성
- 같은 타입의 데이터가 메모리 상에 연속적으로 저장됨

(1) 배열의 장점
- 인덱스를 이용하여 데이터에 빠르게 접근 가능
- 자료의 물리적 위치와 논리적 위치가 같다.

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


(3) 배열 선언
int[] Number = new int[30]; // 배열 선언과 초기화를 동시에 실행
int[] Number = new int[10] {1,2,3, ... ,9,10}; // 배열에 저장할 값 담으면서 초기화
int[] Number = {1,2,3, ... 9,10}; // new int[] 생략하고 초기화 가능 Number에 다른 값을 넣을 때는 다시 new int[] 작성해야함
(4) 배열 코드 구현
- 배열에 데이터를 삽입
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(); //기존 배열을 arrDup 에 복사하기
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 deleteData(int data) {
int targetIndex = -1;
for (int i = 0; i < this.arr.length; i++) { //입력받은 데이터가 배열에 존재하는지 확인
if (this.arr[i] == data) {
targetIndex = i; //존재한다면 targetIndex 변수에 그 데이터의 인덱스 대입
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; i < this.arr.length; i++) {
this.arr[i] = arrDup[i+1];
}
}
}
- 배열에서 중복 값을 제거한 새 배열 생성
int[] arr = {1,5,3,2,2,3,1,4,1,2,3,5};
int[] arrResult = new int[arr.length];
int cnt = 0;
for (int i = 0; i < arr.length; i++) {
boolean dupFlag = false;
for (int j = 0; j < cnt; j++) {
if (arr[i] == arrResult[j]) {
dupFlag = true;
}
}
if (dupFlag == false) {
arrResult[cnt++] = arr[i];
}
}
for (int i = 0; i<cnt; i++) {
System.out.print(arrResult[i] + " ");
}
2. 2차원 배열이란 무엇인가
- 배열이 한 번 중첩된 경우
- 즉, 배열의 요소가 배열인 경우
- 예) {{1,2,3,4,5},{6,7,8,9,10}}
int[][] Number = new int[3][4]; //배열 생성반응형
'Knowledge > 자료구조' 카테고리의 다른 글
| [자료구조] 해시맵(HashMap) (0) | 2023.11.16 |
|---|---|
| [자료구조] 선형 자료구조 - 연결 리스트 (0) | 2023.11.15 |
| [자료구조] 자료구조 (0) | 2023.11.15 |
| [자료구조] 큐(Queue) 정리 (0) | 2023.11.14 |
| [자료구조] 스택(Stack) 정리 (0) | 2023.11.13 |