[CS] 자료구조 01 : 배열(Array)

AppleMango·2024년 5월 7일

배열(Array)

여러 개의 데이터 요소를 담을 수 있는 자료 구조

@frozen
struct Array<Element>

배열의 생성

// 'Int' 요소 배열
let oddNumbers = [1, 3, 5, 7, 9, 11, 13, 15]


// 'String' 요소 배열
let foods = ["Chicken", "Pizza", "Hamburger"]
// 빈 배열 만들기
var emptyFloats: Array<Float> = Array()
var emptyDoubles: [Double] = []
var emptyInts = [Int]()
// 기본값으로 초기화된 배열이 필요할 경우
var digitCounts = Array(repeating: 0, count: 10)
print(digitCounts)
// 출력 -> [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

배열 값에 접근

for - in을 사용해 배열 각각의 값에 접근할 수 있다.

let foods = ["Chicken", "Pizza", "Hamburger"]

for food in foods {
    print("I like \(food).")
}

// 출력 -> I like Chicken.
// 출력 -> I like Pizza.
// 출력 -> I like Hamburger.

isEmpty를 이용해 빈 배열인지 count를 사용해 배열 요소 개수를 쉽게 확인할 수 있다.

let emptyArray = [Int]()
let oddNumbers = [1, 3, 5, 7, 9, 11, 13, 15]

if emptyArray.isEmpty {
    print("배열이 비어있습니다.")
} else {
    print("배열에 \(oddNumbers.count)개의 값이 들어있습니다.")
}

// 출력 -> 배열이 비어있습니다.

if oddNumbers.isEmpty {
    print("배열이 비어있습니다.")
} else {
    print("배열에 \(oddNumbers.count)개의 값이 들어있습니다.")
}

// 출력 -> 배열에 8개의 값이 들어있습니다.

first를 이용해 배열의 첫번째 값, last를 이용해 마지막 값 가져올 수 있다.

let foods = ["Chicken", "Pizza", "Hamburger"]

if let firstElement = foods.first, let lastElement = foods.last {
    print(firstElement, lastElement, separator: ", ")
}

// 출력 -> Chicken, Hamburger

개별 요소에도 접근가능

let emptyArray = [Int]()
let foods = ["Chicken", "Pizza", "Hamburger"]

print(foods[1]) // Pizza
print(emptyArray[0]) // 빈 배열에 접근하면 에러발생

배열의 값 삽입, 삭제, 수정, 찾기

배열의 삽입

  • append(_:) -> 배열 끝에 요소 삽입
  • append(contentsOf:) -> 배열 끝에 배열 삽입
  • insert(_:at:) -> 원하는 위치에 요소 삽입
var fruits = ["Apple", "Mango", "Banana"]

fruits.append("Grape")
fruits.append(contentsOf: ["Strawberry", "Blueberry"])

print(fruits)
// ["Apple", "Mango", "Banana", "Grape", "Strawberry", "Blueberry"]

fruits.insert("Lemon", at: 3)

print(fruits)
// ["Apple", "Mango", "Banana", "Lemon", "Grape", "Strawberry", "Blueberry"]

배열의 삭제

  • removeFirst() -> 첫번째 요소 삭제
  • remove(at:) -> 특정 위치 요소 삭제
  • removeLast() -> 마지막 요소 삭제
fruits.removeFirst()
// ["Mango", "Banana", "Lemon", "Grape", "Strawberry", "Blueberry"]

fruits.remove(at: 3)
// ["Mango", "Banana", "Lemon", "Strawberry", "Blueberry"]

fruits.removeLast()
//["Mango", "Banana", "Lemon", "Strawberry"]

배열의 수정

  • 기존 요소를 새 값으로 바꿀 수 있다.
var fruits = ["Apple", "Mango", "Banana"]

if let i = fruits.firstIndex(of: "Mango") {
    fruits[i] = "Lemon"
}

print(fruits)
// ["Apple", "Lemon", "Banana"]

배열의 요소 찾기

  • contains() -> 지정된 요소가 포함되어있는지의 여부 (Bool값 반환)
  • first -> 첫번째 요소 반환
  • firstIndex(of:) -> 지정된 값의 첫번째 인덱스 반환
  • last -> 마지막 요소 반환
var fruits = ["Mango", "Banana", "Lemon", "Strawberry", "Blueberry"]

print(fruits.contains("Mango")) // true
print(fruits.first!) // Mango
print(fruits.firstIndex(of: "Lemon")!) // 2
print(fruits.last!) // Blueberry

배열의 정렬

sort() -> 배열을 직접 변경하여 정렬

var numbers = [5, 2, 7, 1, 9]
numbers.sort()
print(numbers) // [1, 2, 5, 7, 9]

sorted() -> 정렬된 새로운 배열을 반환

var numbers = [5, 2, 7, 1, 9]
var sortedNumbers = numbers.sorted()
print(sortedNumbers) // [1, 2, 5, 7, 9]

오름차순, 내림차순 정렬

var numbers = [5, 2, 7, 1, 9]

numbers.sort(by: <)
print(numbers) // [1, 2, 5, 7, 9]

numbers.sort(by: >)
print(numbers) // [9, 7, 5, 2, 1]

참고자료 https://developer.apple.com/documentation/swift/array

profile
iOS Developer

0개의 댓글