
오늘의 세션 [ 자료 구조에 대해 알아도록하자]
앞서 자료구조에는 어떤 것들이 있는지 확인하고 array에 대해서
공유하는 시간을 가져보자 !
우리가 코딩을 하면서 이미 많이 접해본 자료구조이다
✖️ Array의 큰 특징은 순차적 으로 데이터를 저장한다
✖️ 자료구조에 저장하는 데이터는 일반적으로 요소 (elemnet)라고 한다.
✖️ Array는 주로 서로 연결된 데이터들을 저장할때 일반적으로 사용한다.
👉 가장 자주 사용되는 자료구조중 하나가 된다.
기타 특징
삽입 순서 대로 저장된다.
이미 생성된 리스트도 수정 가능하다
동일한 값도 여러번 삽입가능하다.
Muti-dimensiona Array(다중차원 배열)
Array의 요소가 Arra(다중차원배열)
Array의 요소가 array 가 될 수 있다.
Array 내부 구조
Array는 왜 순차적으로 데이터를 저장할 수 밖에 없는가..?
실제 메모리 상에서, 즉 물리적으로 데이터가 순차적으로 저장되기 때문
Array 는 메모리의 실제 주소도 순차적으로 되어있다.
그렇기 떄문에 indexing이 가능한 것을 비롯하여 여러 가지 장점이 있지만
단점도 존재한다.
1.Removing or Adding Elements (요소 또는 추가 제거)
index 4,5를 삭제한다면 새로운 배열로 반환하게 된다.
코드는 한줄이겠지만, 내부적으로는 많은 변화가 일어 나고 있다.
2.Array Resizing
메모리를 pre-allocation 하기때문에 순차적으로 메모리에 저장될수있고
대신 처음할당한 메모리 이상으로 많아지면 resizing이 필요하다
이미지처럼 만들어진 배열에 메모리가 늘릴려고 요청을하면
늘어난 메모리에 다시 할당을하기때문에
시간이 지연되게 된다.
그래서 Array 는 예측이 잘 안되는 데이터를 다루기에는 적합하지않다.
언제 사용가능한가?
- 순차적으로 데이터를 저장할때
- 다차원 데이터를 다룰때 > Muti-dimensional Array
- 어떠한 특정 요소를 빠르게 읽어야 할 때 > index를 통해 바로 읽을수 있기 때문
- 데이터의 사이즈가 급변하게 자주 변하지 않을때
- 요소가 자주 삭제되거나 추가되지 않을때
자료구조의 정의와 중요한 이유를 설명하세요
자료구조란 효율적이고 안전하게 설계하여 원활한 프로그래밍을 하기위해 자료를 구분하여
표현한것 그래야만 자료를 더 효율적으로 저장하고 관리할수있으며 자료구조를 잘 분리하면
실행 시간 또한 단축 시킬수도있습니다
Array 가장 큰 특징과 그로 인해 발생하는 장점과 단점에 대해 설명하세요
Array의 가장 큰 특징은 순차적응로 데이터를 저장한다는점입니다 이렇게 데이터에 순서가 있기때문에
0부터 시작하는 index가 존재하며,index를 사용해 특정 요소를 찾고 조작이 가능하다는 것이
Array의 장점입니다 반면에 이에 따른 단점도 존재하는데, 순차적으로 존재하는 데이터의
중간요소가 삽입되거나 삭제 되는 경우 그 뒤에 모든 요소들을 한칸씩 뒤로 밀거나 당겨줘야 하는
단점이 있습니다 이러한 경우 메모리 상에서 이루어지는 작업이 다른 자료구조에 비해 커지기 때문에
Array 는 정보가 자주 삭제 되거나 추가되는 데이터를 담기에는 적절치 않습니다.
Array를 적용 시키면 좋을 데이터의 예를 구체적으로 들어주세요
Array를 적용시키면 좋은 예로 주식차트가 있습니다.주식차트에 대한 데이터는 요소가 중간에 새롭게 추가되거나 삭제되는 정보가 아니며, 날짜별로 주식 가격이 차례대로 저장되어야 하는 데이터입니다.
즉,순서가 굉장히 중요한 데이터 이므로 Array 같이 순서를 보전 해주는 자료구조를 사용하는 것이 좋습니다
이와 같이 데이터에 Array를 사용하지 않는 경우,즉 순서가 없는 자료구조를 사용하는 경우에는
날짜별 주식 가격을 확인하기 어려우며 매번 전체 자료를 읽어들이고 비교해야 하는 번거러움이 발생합니다
이렇게 자료구조 Array 에 대해서 알아보았다.
array은 쉽게 접했지만,
내부적으로 어떻게 구조가 이루어져있는지 알게되었다.
루프 기능을 사용해야할때는 고민해보고 사용하는게 좋을것같다.
여러 전제 조건들이 많을때는 꼭 써야하는가?라는 생각을 해보자!