인접 데이터 구조 - 배열

Uno·2021년 4월 11일
0

인접 데이터 구조는 선형 데이터 구조입니다.

Q. 선형 데이터 구조?
A. 네, Linear data structures 입니다.

Q. 아니 해석말구요…
A. 아! 네 선형이라는 것은 줄이죠? “줄을 선다.” 라는 말이 있잖아요. 줄을 선다는 것은 순서가 있다는 뜻이겠죠? 순서가 있다는 말이 “선형” 이라고 퉁칩시다.

Q. 그러면 인접 데이터구조가 무엇이 있나요?

A. 배열, 힙, 매트릭스 그리고 해시 테이블 같은 것들이 있습니다. 그 중 “배열”을 설명드릴게요.

배열

배열은 영어로 array 입니다. 배열이라고 하면 혹시 느낌이 오시나요? 무언가 배치한다? 이런 느낌이 들더라구요. 저는 배열도 좋은데 정렬 이라고 하면 좀더 느낌이 오더라구요. 비슷한 뜻이죠ㅎ.ㅎ 그냥 느낌이 그렇다구요.

특징들을 나열하면 다음과 같습니다.

  • 0 ~ n 까지 데이터 간 순서 가 있습니다.
  • 인덱스로 접근이 가능합니다.

코드로 보겠습니다.

let array = [1, 2, 3, 4, 5, 6]

1차원 배열 입니다. 접근은 다음과 같이 할 수 있습니다.

array[0] // 1
array[1] // 2
array[2] // 3

선언 방법은 3 가지가 있습니다.

// 1 기본
let array01: Array<Int> = [1, 2, 3, 4, 5, 6]

// 2 축약
let array02: [Int] = [1, 2, 3, 4, 5, 6]

// 3 추론
let array03 = [1, 2, 3, 4, 5, 6]

Q. 이 셋 중 뭐가 제일 좋나요?
A. 기준에 따라 다르겠지만, 어떤 것을 선택하는 것이 중요한 것이 아니라 코드 전반적으로 통일하는 것이 더 중요해 보입니다. 동문서답과 같은 대답이지만, 그런 대답의 이유는 어떤걸 선택해도 큰 상관 없기 때문입니다.

N차 배열을 선언하고자 한다면 다음과 같이 선언하면 됩니다.

let nArray: [[Int]] = [[0,0], [0,1], [1,0], [1,1]]

배열의 값을 입력했다면 출력도 할 수 있어야죠?
출력방법은 다음과 같습니다.

let array: [Int] = [1, 2, 3, 4, 5, 6]
array[0] // 1
array[1] // 2
array[2] // 3
array[3] // 4
array[4] // 5
array[5] // 6

배열값을 추가해보겠습니다.

array.append(7)
array.append(8)
array.append(9)

특정 인덱스에 값을 삽입하는 방법입니다.

array.insert(2, at: 2)
array.insert(3, at: 3)
array.insert(4, at: 4)

배열 값을 삭제하는 방법입니다.

array.removeLast()	// 마지막 값을 삭제합니다.

array.remove(at:3) // 특정 인덱스의 값을 삭제합니다.
profile
iOS & Flutter

0개의 댓글