반응형

간단히 사람배열과 그 사람의 보유금액배열을 스위프트로 생성해 보겠다.
사람배열은 문자열형, 보유금액배열은 Int형이다.

var arrPerson:[String] = []
var arrMoney:[Int] = []

// 한명씩 append시키고
arrPerson.append("홍길동")
arrPerson.append("고길동")
arrPerson.append("둘리")

//순서대로 보유금액을 append시킨다.
arrMoney.append(10000000)
arrMoney.append(30000000)
arrMoney.append(0)

//이제 dictionary를 선언한다. key, value는 String,Int형이다. key에는 이름이 value에는 금액이 들어갈 것이다.
var dicData = [String:Int]()

//사람과 보유금액의 배열은 1:1이므로 사람이든 금액이든 아무 배열이나 잡고 돌리면 되지만 난 사람 배열로 돌린다.
for i in 0..<arrPerson.count {
    //dictionary의 key에 사람배열의 값, value에 보유금액의 값을 저장한다.
    dicData[arrPerson[i]] = arrMoney[i]
}

// 출력해보면 순서대로 홍길동 10000000, 고길동 30000000, 둘리 0이 찍히는것을 확인할 수 있다.
for (key, value) in dicData {
    print("\(key) : \(value)")
}

print("정렬 후 결과")

// 이제 정렬을 해보자
// 오름차순정렬이고 만약 내림차순이 하고싶다면 $0.1 < $1.1 대신 $0.1 > $1.1바꿔주면 된다.
// 참고로 0.1, 1.1은 첫번째 인자의 value 두번째 인자의 value를 뜻한다.
// 결과는 튜플로 반환가능하다.
var tupSortResult = dicData.sorted {$0.1 < $1.1}

//print해보면 정렬된 상태로 확인된다.
//[(key: "둘리", value: 0), (key: "홍길동", value: 10000000), (key: "고길동", value: 30000000)]
print("\(tupSortResult)")

//for문을 통해 돌려가며 찍어보면 아래처럼 보여진다.
// 둘리 0
// 홍길동 10000000
// 고길동 30000000
for i in 0..<tupSortResult.count {
    print("\(tupSortResult[i].key) \(tupSortResult[i])")
}

반응형
Posted by Hippalus
,