자료구조 중 기초중의 기초 이고 가장 많이 사용 하고 응용하는게 배열이지 않을까 생각이 들정도로 중요하고 이해 하고 넘어가야하는 부분이다....ㅎ
일단 모르면 배열(리스트)로 푸는게 습관이 되어있다
배열(Array) 란? ( Java )
- 많은 수의 데이터를 다룰 때 사용하는 자료구조
- 배열의 각 데이터의 인덱스와 1:1대응 하도록 구성되어 있음
- 데이터가 메모리 상에 연속적으로 저장되는 구조

배열의 장점
- 배열의 각 위치의 인덱스를 이용하여 데이터에 빠르게 접근이 가능하다
배열의 단점
- 데이터의 추가/삭제가 번거로운 편이며 최대길이를 정해서 생성해야함
- 가변 길이 배열은 배열의 크기를 변경할 때마다 새로운 배열을 생성이 필요함
- 데이터 삭제 시 , 인덱스를 유지하기 위해 빈 공간을 유지해야함
리스트(List) 란? (python)
- 배열과 같이 여러 개의 데이터를 나열한 자료구조.
- Java와는 다르게 한 List 안에 숫자,문자(열), 논리형 등 모든 데이터들을 같이 저장 할 수 있다.
- 리스트안에 또 다른 리스트를 넣을 수도 있다.
JAVA 배열 (삽입, 삭제 ) 코드
-java 에서 배열은 직접적인 추가와 삭제가 불가능하므로 추가와 삭제를 하기 위해서는 새로 만들 배열(기본배열 copy)
와 기본배열(copy)이 필요하다.
public class ArrayCreate {
int [] arr;
ArrayCreate(int size){
this.arr = new int[size];
}
public void insertData(int index, int data){
if(index <0 || index > this.arr.length){
return;
}
int [] arrcpy = this.arr.clone();
this.arr = new int[this.arr.length +1];
for (int i = 0; i <index ; i++) {
this.arr[i] = arrcpy[i];
}
for (int i = index; i <this.arr.length ; i++) {
this.arr[i] = arrcpy[i-1];
}
this.arr[index] = data;
}
public void removeData(int data){
int targetIdx = -1;
for (int i = 0; i <this.arr.length ; i++) {
if(this.arr[i] == data){
targetIdx = i;
break;
}
}
if(targetIdx == -1){
System.out.println("X");
}else{
int [] arrcpy = this.arr.clone();
this.arr = new int[this.arr.length-1];
for (int i = 0; i <targetIdx ; i++) {
this.arr[i] = arrcpy[i];
}
for (int i = targetIdx; i <this.arr.length ; i++) {
this.arr[i] = arrcpy[i+1];
}
}
}
public static void main(String[] args) {
int size = 5;
ArrayCreate arrc = new ArrayCreate(size);
for (int i = 0; i < size; i++) {
arrc.arr[i] = i +1;
}
System.out.println(Arrays.toString(arrc.arr));
arrc.arr[0] = 10;
System.out.println(Arrays.toString(arrc.arr));
arrc.insertData(2,20);
arrc.removeData(4);
System.out.println(Arrays.toString(arrc.arr));
}

출력 결과
Python (List) 삽입 삭제 코드
Python 에서는 Java와는 다르게 동적으로 리스트에 삽입과 삭제가 가능하다.
append, insert , remove ... 와 같이 원하는 방법으로 삽입 삭제가 가능하
lst = [1,2,3,4,5]
print(lst)
lst.append(100)
print(lst)
lst.insert(1,20)
print(lst)
lst.remove(5)
print(lst)
print(lst.index(3))
lst.remove(lst.index(3))
print(lst)
lst.extend([9,8,7,6,5])
print(lst)
출력 결과

append : 리스트에 오른쪽 부터 삽입
insert : insert( 인덱스 위치 , 삽입할 데이터 값)
remove : remove(삭제할 데이터 값)
index : index( 리스트에서 index 위치를 찾을 값)
remove(idx) : remove(리스트내에서 삭제해야할 인덱스 위치값)
extend : (확장 또는 추가)
확실히 자바에 비해서는 파이썬이 배열을 다루기에는 간단한 면이 있다.
파이썬은 내장함수들을 많이 알고있다면 다양한 방법으로 배열조작이 가능하다.
자바 또한 ArrayList 가 존재하여 비슷하게 가능하다
'자료구조' 카테고리의 다른 글
| 자료구조 - 스택 , 큐 , 데크(Stack , Queue, Deque) Java (0) | 2023.02.15 |
|---|---|
| 자료구조 - 양방향 연결리스트 (DoublyLinkedList) python code (0) | 2023.02.13 |
| 자료구조 - 연결리스트 (LinkedList) Python Code (0) | 2023.02.13 |
| 자료구저 - 연결리스트 (Linked List ) JAVA (0) | 2023.02.13 |