순서가 있는 데이터를 처음부터 마지막까지 차례대로 읽어 들이는 것을 순회 탐색이라고 한다.
배열을 순회 탐색할 때에는 for-in 구문을 많이 사용한다.
방식은 크게 두 가지로 나눌 수 있는데, 한 가지는 배열의 길이를 직접 다루는 방식이고, 다른 한 가지는 배열의 순회특성을 이용하는 방식이다.
1. 직접 다루는 방식
배열의 길이를 직접 다루는 방식이란 배열의 길이를 구해서 이 횟수만큼 루프가 반복되도록 직접 구현하는 것을 말한다. 최소한 한 줄의 코드가 더 필요하지만, 배열 자체에 의존하지 않고 길이만 가져와 사용하는 방식으로 원하는 만큼 횟수를 늘리거나 줄일 수 있으며 다양한 작업을 다룰 때 많이 사용된다.
스위프트에서는 배열의 길이를 구할 때에는 배열 변수나 상수에 .count 를 붙여주면 된다.
📝 TMI : .count와 같은 것들을 속성( properties )라고 함
이를 이용하여 아래와 같이 배열의 길이를 구할 수 있다.
var city = ["Seoul", "New York", "LA", "Santiago"]
city.count // 배열의 길이 4
count 속성을 이용하여 배열의 크기를 얻었다면 이를 상수 length에 할당하고, 0에서 부터 시작한 카운터 변수가 이 크기만큼 커질 때까지 for-in 구문을 반복한다.
var city = ["Seoul", "New York", "LA", "Santiago"]
let length = city.count
for i in 0..<lenght { // 반 닫힌 범위 연산자를 사용하여 배열을 순회
print("\(i)번째 배열 원소는 \(city[i])")
}
for-in 구문과 함께 반 닫힌 범위 연산자를 사용하면 이 연산자의 특성상 배열의 크기 값을 포함하지 않는 범위 0~3까지를 가져온다. 이 범위는 0부터 시작하는 배열 인덱스의 특성에 의해 마지막 인덱스 값이 항상 배열의 크기보다 1이 적다는 사실과 일치한다.
📝 반 닫힌 연산자를 이용하면 배열의 순회를 훨씬 더 쉽게 처리할 수 있다는 얘기..
2. 순회 특성을 이용하는 방식
배열의 순회 특성을 이용하는 방식은 for-in 구문에 배열 자체를 넣어서 실행시키는 것을 의미한다.
반복문에서 알아서 배열을 순서대로 읽어가도록 하는데, 이로 인해 for-in 구문은 배열 데이터에 밀착하여 루프를 실행하기 때문에 루프의 실행 횟수 등을 임의로 조정하기는 어렵다.
두 번째 방법은 이보다 더 간단하다.
배열 순회 특성, 즉 이레이터(Iterator)를 이용하는 방식이다.
첫 번째 방법은 for-in 구문에 순번을 가진 범위 데이터를 넣으면 그 데이터의 크기만큼 반복 실행되는 특성 볼 수 있었다.
이 특성은 배열에도 그대로 적용돼 for-in 구문에 배열 데이터를 직접 넣으면 훨씬 간편하게 순회할 수 있다.
var city = ["Seoul", "New York", "LA", "Santiago"]
// 배열값의 순회 특성을 사용하여 탐색
for row in city {
print("배열 원소는 \(row)")
}
순회 특성을 이용하여 배열을 탐색하면 루프 상수에 담기는 값은 현재의 인덱스 값이 아니라 배열 데이터 자체이므로, 몇 번째 데이터인지 인덱스를 바로 알기는 어렵다. 이때는 index(of:)를 사용하면 데이터를 통해 인덱스 값을 역으로 찾을 수 있다.
📝 TMI : index(of:)는 메소드(Method) 라는것
var city = ["Seoul", "New York", "LA", "Santiago"]
for row in city {
let index = city.index(of: row) // 배열의 인덱스를 확인하여 index 상수에 대입
print("배열 원소는 \(row)")
}
'메모장' 카테고리의 다른 글
Swift 배열 데이터 동적 추가 (1) | 2023.03.16 |
---|---|
Swift 배열의 동적 선언과 초기화 (1) | 2023.03.15 |
Swift 배열 (4) | 2023.03.13 |
Swift 조건문 3 (3) | 2023.03.09 |
Swift 조건문 2 (3) | 2023.03.08 |