swift

배열(Array) 파헤치기!

햄지이 2022. 6. 28. 13:40

1. 배열이란?

배열은 순서를 가지고, 같은 데이터 타입을 저장할 수 있는 컬렉션입니다.

배열 속에는 각 순번이 있고, 이것을 Index(인덱스)라고 합니다.

배열의 인덱스를 통해서 각각 요소들에게 접근할 수 있다.

그리고 배열안의 인덱스는 0부터 시작한다. (컴퓨터가 0부터 시작하기 때문에)

 

var 배열 = [4, 3, 2, 1]

이 배열 속에서 인덱스를 표현한다면 0-> 4,  1-> 3,   2-> 2,   3-> 1으로 표현할 수 있다.

 

Array 배열 생성

1. let 배열 : [Int] = [1, 2, 3, 4]

2.let 배열1 : Array<Int> = [5, 6, 7, 8]

print(배열, 배열1)=[1, 2, 3, 4] [5, 6, 7, 8]

배열을 생성하는방법입니다. [데이터 타입] 형태와 Array<데이터타입>이 있습니다.

간단한  1번 방법을 많이 사용합니다. let을 사용하여 배열을 만들었기때문에

배열 내용에 추가 제거 를 진행할 수 없습니다. (var 배열로 진행시 가능)

let 배열 : [] = 상수형 배열    var 배열 : [] = 변수형 배열

 

var 배열 = [Int] (repeating: 1, count: 5)

print(배열)=[1, 1, 1, 1, 1]

고정된 수의 기본값으로 미리 초기화된 배열이 필요한경우 Array(repeating:Int count:Int)를

이용하여 만들 수 있습니다. repeating 값으로 count 만큼의 배열의 초기화된 상태로 만들어진다.

 

배열의 범위 

var arr = Array(1...3)

print(arr) /=[1, 2, 3]

결과값 1...3 -> 1에서부터 3까지 출력 해준다는것을 의미한다.

 

 

배열 추가 하기

var 배열 : [Int] = [1, 2, 3, 4]

배열.append(5)

배열.append(contentsOf: [6, 7])

배열 += [8, 9]

print(배열)=[1, 2, 3, 4, 5, 6, 7, 8, 9]

위 내용과 같이 append, append(contentsOf:[], +=  모두 배열에 추가 할 수 있습니다.

 

var 배열 : [Int] = [1, 2, 3, 4]

배열.insert(5, at: 0) //= [5, 1, 2, 3, 4]

insert 함수를 통해서 해당 배열의 인덱스 위치에 요소를 추가할 수 도 있습니다.at:인덱스 원하는 곳에 입력하면 5를 추가 할 수 있다.

 

배열 요소 삭제하기

var 배열 : [Int] = [1, 2, 3, 4]

배열.remove(at: 0)

print(배열)=[2, 3, 4]

remove 함수를 사용하여 인덱스 0번째인 1의 값을 삭제 한다.그리하여 결과값이 [2, 3, 4]로 나타 난다.

 

배열 범위 선정하여 범위 만큼 인덱스값 삭제 하기

var 배열 : [Int] = [1, 2, 3, 4, 5]

배열.removeSubrange(0...1)

print(배열)=[3, 4, 5]

removeSubrange()함수의 0...1 를 적용하여 배열의 인덱스 0번과 1번 자리의 1,2를 제외하고 출력한다.

 

배열 맨 끝의 값을 지우고 출력하기

var arr = [1, 2, 3, 4]

arr.removeLast()

print(arr) /=[1, 2, 3]  

배열의  끝 값을 지우고 출력한다.

 

배열접근하기

var 배열 : [Int] = [1, 2, 3, 4, 5]

let 배열1 = 배열[0]

// 1

let 배열2 = 배열[1]

// 2

let 배열4 = 배열[4]

// 5

배열 안에 있는 요소에 접근하는 방법 입니다.

 

배열 뒤집기

var 배열 : [Int] = [1, 2, 3, 4]

배열.reversed()

배열 = 배열.reversed()

 

배열의 순서을 뒤 바꿔주는 함수 이다.

 

배열의 오름차순 // 내림차순 함수

 

var 배열 : [Int] = [1, 2, 3, 4]

// 오름차순

배열.sort()

배열.sort(by: <)

배열 = 배열.sorted(by: <)

 

// 내림차순

배열.sort(by: >)

배열 = 배열.sorted(by: >)

배열의 원소 모두를 인트로 변환

map (String 값을 Int 로 변환 한다.)

var arrSt = ["1", "2", "3", "4"]

var arrInt = arrSt.map { Int($0)! }

print(arrInt)/=[1, 2, 3, 4]

배열안의 스트링으로 표현한 ["1", "2"] 의 값들을 [1, 2] 인트값으로 변환이 가능하다.

 

{$0}  이라는게 모든 원소의 값이다?

 

배열의 조건식에 참인 원소만 필터링(출력한다.)

var arr = [1, 2, 3, 4, 5]

var arrtr = arr.filter { $0 % 2 == 0 }  

var arrfa = arr.filter { $0 % 2 == 1 }  

print("arrtr의값\(arrtr), arrfa의값\(arrfa)")

 

arrtr의값[1, 4, 5], arrfa의값[]

 

모든 원소를 더하기

 var arr = [1, 2, 3, 4, 5]

var arrp = arr.reduce(0, +)

print(arrp)/=15 

 

배열 순회하기

순회하며 원소 참조 하기

var arr = [1, 2, 3, 4, 5]

for n in arr {

print(n)

}  n의 값은 1\2\3\4\5 가 나타난다. 

arr 의 값을 반복한다 n 에 넣어서 말이다

 

배열을 순회하며 "원소"와 "인덱스"참조 하기 enumerated()

var arr = [1, 2, 3, 4, 5]

for (index, value) in arr.enumerated() {

print("\(index), \(value)")

} index 의값출력  - 0\1\2\3\4 (배열의 순서는 0부터 시작한다(컴터의시작은0))

  value  의값출력 - 1\2\3\4\5 (배열의 값은 1...5 라서 1부터 시작한다.)

 

인덱스로 순회 하기

인덱스값으로 순회 하여 값을 알아본다.

var arr = [1, 2, 3, 4, 5]

for i in 0..<arr.count {

    print(arr[i])

}/1,2,3,4,5

 

for i in arr.indices {

    print("2번 for문 \(arr[i])")

}/2번 for문 1,2,3,4,5

위 2개의 for 문 같다. 

1번째 for의 print() 값은 1,2,3,4,5 가 나타난다.

2번째 for의 print() 값에서도 1,2,3,4,5 가 나타난다.

 

역순으로 순회하기

var arr = [1, 2, 3, 4, 5]

for i in (0..<arr.count).reversed() {

    print(arr[i])

}/5,4,3,2,1

for i in arr.indices.reversed() {

    print("2번 for문 \(arr[i])")

}/2번 for문 5,4,3,2,1

위와 같이 for의 내용은 같다. 여기서 역순으로 불러올 함수만 추가했다.

.reversed() 이 함수로 인해 결과값이 역순으로 나타 날 수 있게 되었다.

 

 

배열을 거꾸로 출력하기 revesed()

 var arr = [1, 2, 3, 4, 5]

var aarr = arr.reversed()

 

for n in aarr {

    print(n)

}/= 5,4,3,2,1 

 

제곱근 sqrt()

var a = sqrt(4.0)

print(a)  결과 : 2.0

 

거듭 제곱 pow()

var a = pow(4.0, 3.0) 4의 3승 4^3 이다.

print(a) 결과 64.0