Study/Algorithm

Algorithm Study 자료구조- ' 배열 '

Dodal 2021. 5. 2. 16:57

! 본컨텐츠는 생활코딩 Data Structuer 교육자료를 기반으로 재구성하였습니다.

 

 

배열

연관된 데이터하나의 변수그룹핑해서 관리하기 위한 방법.

배열을 이용하면 하나의 변수에, 여러 정보를 담을 수 있고

반복문과 결합하면 많은 정보도 효율적으로 처리 가능.

 

 

new Array()는 배열을 만든다.

이것을 변수 studuent에 대입한다. 

student[0]은 첫 번째 배열의 값, 문자열 아무개를 값으로 대입하고 있다.

생활코딩 배열 교육자료 발췌

-'최진혁'은 배열에 저장된 값

-숫자 0은 '최진혁'이라는 값을 식별하는 인덱스

-인덱스를 이용해서 '최진혁'이라는 값을 가져올 수 있음

-인덱스와 0을 합쳐서 엘리먼트라고 함

 

배열의 사용

학급을 예로들어 학교에서는 학생들에게 번호를 부여한다.

이 번호는 학년이 바뀔 때까지 절대 바뀌지 않는다.

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

 

여기서 학생은 배열에서 하나의 엘리먼트로 표현할 수 있다.

학생의 이름배열의 값, 학생의 인덱스학번으로 기능을 할 수 있다.

 

배열에는 여러 정보가 저장되어 있다. 이러한 다수의 정보를 처리하기 위한 방법은 반복이다.

배열과 반복문은 바늘과 실의 관계처럼 항상 따라 다닌다.

for(i = 0, i < student.length; i++) {
	console.log(student[i]);
}

 

배열의 한계

 

배열에도 단점이 존재한다. 

student[3] = null;

생활코딩 배열 교육자료 발췌

null은 값이 없다는 의미이다. 위의 반복문으로 이것을 실행하면 아래와 같은 결과가 출력될 것이다.

위 실행결과에 null이 포함되어 있다. 즉 처리되지 않아야 할 정보인 인덱스 3까지 결과에 포함되어 있는 것이다.

물론 아래처럼 조건문으로 제외해도 된다.

for(i = 0; i < student.length; i++) {
	if(student[i] != null) {
    	console.log(student[i]);
    }
}

이것도 좋은 방법이지만 위와 같은 반복문이 수십 개 등장한다면 그만큼 조건문도 많아질 것이다.

이것이 배열의 단점이다. 배열은 인덱스에 따라서 값을 유지하기 때문에 엘리먼트가 삭제돼도 

빈자리가 남게 된다. 그렇다면 존재하지 않는 데이터는 아예 없애 버리는 것이 좋겠다.

 

빈 인덱스가 존재하는 배열상태
빈 인덱스를 메꿈

이렇게 데이터가 순서에 따라서 빈틈없이 연속적으로 위치하는 데이터 스트럭쳐를 LIST라고 한다.

하지만 이렇게 해도 문제가 발생한다. '김주한' 학생의 식별자인 인덱스 값이 4에서 3으로 수정되었다.

만약 인덱스 4를 이용해서 김주한 학생의 값을 가져오는 프로그램이 있다면? 문제가 생김.

 

그럼 해결책은? up to you......

인덱스가 중요한 경우, 배열을 사용하면 됨

null을 처리해서 제외해야 된다면 조건문을 사용하면 되고

인덱스가 중요하지 않다?리스트를 사용하면 됨.

 

반응형