- Today
- Total
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 감성에세이
- programmer
- 알고리즘
- 디자인 패턴
- swift
- 정렬알고리즘
- swift 코딩테스트
- 자료구조
- 다트
- Design Pattern
- 코테
- programmers
- 정렬
- 프로그래머스 레벨2
- swift 알고리즘
- sort
- 스위프트
- 프로그래머스 swift
- coding test
- 코딩테스트
- 스위프트디자인패턴
- 디자인패턴
- dart
- swift split
- 프로그래머스 level1
- rxswift
- 정렬 알고리즘
- 프로그래머스
- Algorithm
- datastructure
Bill Kim's Life...
[자료구조] Array : 순차리스트(배열) 본문
자료구조의 한 종류인 순차리스트(배열)에 대해서 살펴봅니다.
#. 구독 대상
- 컴퓨터 및 소프트웨어 공학과 관련자
- 자료구조 개념을 잡고 싶으신 분
- 소프트웨어 관련 종사자
- 기타 컴퓨터 공학에 관심이 있으신 분
- 기타 소프트웨어 개발과 지식에 관심이 있으신 모든 분들
- Swift 언어를 활용하여 자료구조를 공부해보고 싶으신 분들
Array(배열)
자료구조에서 가장 기본이 되는 구조는 배열(리스트)입니다.
리스트는 크게 아래와 같이 2개의 리스트로 구분할 수 있습니다.
순차 리스트 :
배열을 기반으로 구현된 리스트
연결 리스트 :
메모리의 동적 할당을 기반으로 구현된 리스트
본 강의에서는 Swift 코드를 활용하여 순차 리스트에 대해서 살펴봅니다.
Concept
순차리스트는 아래와 같이 특정 자료를 정해진 공간안에서 순차적으로 저장 및 가져오는 자료구조입니다.
순차 리스트(Array)의 특징을 살펴보면 아래와 같습니다.
- 데이터를 순차적으로 저장합니다.
- 데이터 중복 저장을 허용합니다.
- 배열의 총 길이는 초기에 결정되어야 합니다.(변경 불가)
- 인덱스 값을 기준으로 데이터의 참조가 가능합니다.
- 삭제의 과정에서 데이터의 이동이 빈번하게 일어납니다.
Implementation
Swift를 활용하여 Array 를 구현해보겠습니다.
우선 필요한 메소드는 아래와 같습니다.
- init : 배열의 크기를 설정하는 초기화 함수
- insert : 데이터 입력
- remove : 특정 인덱스의 데이터 삭제
- removeAll : 모든 데이터 삭제
- get : 특정 인덱스의 데이터 값을 반환
- count : 현재 배열의 크기를 반환
Node 클래스
가장 데이터의 기본이 되는 Node 클래스 입니다. 해당 Node 클래스는 모든 데이터 형식을 받을 수 있도록 Generic 형태로 구현이 되어 있습니다.
class Node<T> {
fileprivate var data:T
init(_ data: T) {
self.data = data
}
}
ArrayList 클래스
class ArrayList<T> {
private var size:Int
private var list:[Node<T>]
init(size:Int) {
self.list = [Node<T>]()
self.size = size
}
func insert(item:T) {
if self.list.count < size {
self.list.append(Node<T>(item))
}
}
func remove(at:Int) {
if self.list.count <= 0 { return }
if self.list.count <= at { return }
self.list.remove(at: at)
}
func removeAll() {
self.list.removeAll()
}
func get(index:Int) -> T {
return self.list[index].data
}
func count() -> Int {
size = list.count
return size
}
}
사용 예시
let list:ArrayList<Int> = ArrayList(size: 5)
list.insert(item: 1)
list.insert(item: 2)
list.insert(item: 3)
list.insert(item: 4)
list.insert(item: 5)
// 최대 리스트 크기가 5로 설정하였으므로 추가 불가
list.insert(item: 6)
// 현재 리스트 카운트 : 5
print(list.count())
for i in 0..<list.count() {
print(list.get(index: i))
// 1
// 2
// 3
// 4
// 5
}
// 4번째 요소 삭제
list.remove(at: 3)
// 현재 리스트 카운트 : 4
print(list.count())
for i in 0..<list.count() {
print(list.get(index: i))
// 1
// 2
// 3
// 5
}
list.removeAll()
// 현재 리스트 카운트 : 0
print(list.count())
이상으로 자료구조의 Array(배열)에 대해서 살펴보았습니다.
그럼 오늘도 변함없이 항상 즐겁고 행복한 개발을 하시길 바래봅니다.
감사합니다.
https://www.slideshare.net/BillKim8/swift-data-structure-array
[참고 자료(References)]
[1] [Swift 자료구조 ch01] 자료구조 살펴보기 : https://kor45cw.tistory.com/238
[2] Swift로 자료구조, 알고리즘 공부하기 (3) - Array List : https://kor45cw.tistory.com/3
[3] Swift의 Array 완전 정복 – 01. 생성과 조작 : https://soooprmx.com/archives/7045
[4] (Swift 기초) 자료구조(Collection) - 배열(Array) (2) : https://m.blog.naver.com/PostView.nhn?blogId=el_vin&logNo=221019918085&categoryNo=10&proxyReferer=&proxyReferer=https:%2F%2Fwww.google.com%2F
[5] [Swift4] 컬렉션 타입 ::: Array / Dictionary / 메소드 / Optional / nil : https://yereol.tistory.com/9
[6] Swift Language 배열 : https://sodocumentation.net/ko/swift/topic/284/배열
[7] Swift Collection Types : https://www.hohyeonmoon.com/blog/swift-collection-types/
[8] 10장 Swift 기초 8, 묶음(collection) 자료 구조, 배열(array) : https://www.youtube.com/watch?v=UgMHDoFpN9M
[9] Swift의 Sequence와 Collection에 대해 알아야 하는것들 : https://academy.realm.io/kr/posts/try-swift-soroush-khanlou-sequence-collection/
[10] 자료구조: Linked List 대 ArrayList : http://www.nextree.co.kr/p6506/
'CS(컴퓨터 과학) > Data Structure' 카테고리의 다른 글
[자료구조] Dequeue(데크) : Doubly-ended Queue, 스택과 큐의 장점을 모아서 만든 자료구조 (0) | 2020.06.12 |
---|---|
[자료구조] Queue(큐) : FIFO, 배열을 통한 큐 구현 (0) | 2020.06.12 |
[자료구조] Stack(스택) : LIFO (0) | 2020.06.12 |
[자료구조] Linked List : 연결 리스트(Single, Double) (0) | 2020.06.11 |
[자료구조] 자료구조의 목적과 분류 (0) | 2020.06.11 |