본문 바로가기
Programming/DATA STRUCTURE

[Data Structure] Array

Array









● 모든 언어에서 지원되는 타입

● 이미 알고 있는 데이터 스트럭쳐

● 많은 데이터 스트럭쳐들이 부품으로 사용


데이터가 많아지면 그룹관리의  필요성이 생긴다

이럴 때 사용하는 것이 배열(Array)이다.


여러 데이터를 하나의 이름으로 그룹핑해서 관리하기 위한 데이터 스트럭쳐




● 배열의 용어


1
2
3
4
5
6
student = new Array();
student[0= '최진혁';
student[1= '한이람';
student[2= '최유빈';
student[3= '한이은';
student[4= '김주한';
cs




Value : 값

Index : 값을 식별하는 식별자

Element



● 배열의 사용


학급을 프로그래밍적으로 표현하기엔 배열이 좋다. 선생님이 학생의 이름을 기억하는 것은 어려운 일이다.

그래서 학교에서는 학생들에게 번호를 부여하며, 이 번호는 학년이 바뀔 때까지 절대 바뀌지 않는다.

전학을 가면 그 번호는 결번이 되고, 전학을 오면 마지막 번호에 추가 된다.

여기서 학생은 배열에서 하나의 엘리먼트로 표현 할 수 있고 학생의 이름은 배열의 값, 학생의 인덱스는 학번으로 기능을 할 수 있다.

 

배열에는 여러 정보가 저장되어 있다. 이러한 다수의 정보를 처리하기 위한 방법은 반복이며, 배열과 반복문은 바늘과 실의 관계라고 할 수 있다.


1
2
3
for(i = 0; i < student.length; i++){
   System.out.println(student[i]);
}
cs



● 배열의 한계


배열은 좋은 데이터 표현방법이다. 하지만 배열로 모든 것을 해결 할 수는 없다.

위의 예제에서 한이은 학생이 전학을 갔다고 하면


1
student[3= null;
cs




1
2
3
4
5
최진혁
한이람
최유빈
null
김주한
cs


반복문을 통한 출력 결과

처리되지 않아야 할 정보인 인덱스 3까지 결과에 포함되어 있다.

조건문을 통하여 제외 시킬 수 있지만 반복문이 수십 개 등장한다면 그만큼 조건문도 많아진다. 배열은 인덱스에 따라서 값을 유지하기 때문에 엘리먼트가 삭제돼도 빈자리가 남게된다. 이것이 배열의 단점이다.


그렇다면 존재하지 않는 데이터는 아예 없애버리는 것이 좋다.

즉, 삭제한 자리를 뒤에 위치한 엘리먼트로 메꾸는 것이고, 이렇게 데이터가 순서에 따라서 빈틈없이 연속적으로 위치하는 데이터 스트럭쳐를 리스트(list)라고 한다.





하지만 이렇게 해도 문제가 있다. 김주한 학생의 식별자인 인덱스 값이 4에서 3이 되었다. 만약 인덱스 4를 이용해서 김주한 학생의 값을 가져오는 프로그램이 있다면 문제가 생길 것이다.

'Programming > DATA STRUCTURE' 카테고리의 다른 글

[Data Structure] Linked List  (1) 2018.05.23
[Data Structure] Array List  (2) 2018.05.23
[Data Structure] Data Structure란?  (2) 2018.05.23