-
DataStructure - Array(배열)Programming/Data Structure & Algorithm 2021. 10. 7. 17:29
안녕하세요 BeePeach입니다 :)
오늘은 자료구조에서 가장 기초적인 Array(배열)에 대해서 공부해보도록 하겠습니다!
배열이란 같은 형식의 데이터를 메모리에 연속적으로 저장한 자료구조입니다.
그리고 각각의 원소를 인덱스로 접근할 수 있는 특징이 있습니다.
배열은 Swift에서 이미 만들어져 있으므로 따로 만들 필요는 없고 Swift의 배열에 대해서 잘 알아두기만 하면 될 거 같습니다.
Swift 배열에 대해서는 이전 포스팅에서 다루었으므로 여기를 확인해주세요.
출처: https://korguy.tistory.com/entry/Arra
배열의 장점
배열은 인덱스로 접근이 가능하기 때문에 빠른 접근이 가능합니다.
인덱스가 없다면 데이터의 처음부터 접근을 해서 하나하나 찾아봐야 하지만 인덱스가 있기 때문에 해당 데이터에 바로 접근이 가능합니다.
배열의 단점
배열은 미리 메모리 크기를 할당해야 합니다. 그래서 데이터를 추가시키려면 공간을 더 할당해야합니다.
Swift에서는 배열의 크기를 더 할당해야 할 때 기존 배열의 크기보다 2배만큼의 공간을 더 할당하게 됩니다!
그런데 배열은 연속적으로 연결된 구조이기 때문에 메모리의 뒤쪽 공간에 다른 데이터가 존재한다면 다른 공간에 처음부터 다시 할당해서 복사해야 하는 경우가 생길 수 있습니다.
메모리 공간을 새로 할당하는 작업은 비교적 무거운 작업이기 때문에 성능에 영향을 줄 수 있습니다.
또한 중간 데이터를 삭제한다면 그 빈 공간을 뒤쪽 데이터가 채워야 하는 문제도 있습니다.
문자열 배열에서 해당하는 단어가 몇 개 포함되어 있는지 구해보는 문제
Array와 String은 모두 collection이기 때문에 for-in문으로 반복이 가능합니다.
(만약 Collection이 뭔지 잘 모르신다면 여기를 참고해주세요.)
이렇게 2중 for-in 문을 활용하면 단어 하나하나를 비교할 수 있습니다.
단어 하나하나가 e와 같다면 count를 1씩 증가시켜 총 e의 개수를 구할 수 있습니다.
728x90'Programming > Data Structure & Algorithm' 카테고리의 다른 글
DataStructure - Linked List (0) 2021.11.06 DataStructure - Stack(스택) (0) 2021.10.14 DataStructure - Queue - 큐 (0) 2021.10.13 DataStructure - Data Structure 자료구조란?? (0) 2021.10.07 Swift 값 입력 받기 (0) 2021.01.21