[swift] 정렬 함수를 사용하여 배열을 조각낸 다음 다시 병합하기

배열을 조각내어 정렬하고, 다시 병합하는 작업은 많은 알고리즘에서 사용되는 일반적인 작업입니다. Swift에서는 배열을 조각내고 병합하기 위한 내장 함수들을 제공하고 있으므로 편리하게 사용할 수 있습니다.

배열 조각내기

Swift에서는 배열을 조각내기 위해 array.suffix(from: )array.prefix(upTo: ) 메서드를 사용할 수 있습니다. suffix(from: )는 주어진 인덱스로부터 끝까지의 배열 부분을 반환하고, prefix(upTo: )는 주어진 인덱스 직전까지의 배열 부분을 반환합니다.

let numbers = [5, 3, 8, 2, 1, 7, 4, 6]
let slice1 = numbers.prefix(upTo: 4) // [5, 3, 8, 2]
let slice2 = numbers.suffix(from: 4) // [1, 7, 4, 6]

배열 정렬하기

Swift에서 배열을 정렬하기 위해서는 array.sort() 함수를 사용하면 됩니다. sort() 함수는 원본 배열을 변경하며, 기본적으로 오름차순으로 정렬합니다. 내림차순으로 정렬하려면 sort(by: ) 메서드를 사용하여 비교 함수를 전달해주면 됩니다.

var numbers = [5, 3, 8, 2, 1, 7, 4, 6]
numbers.sort() // [1, 2, 3, 4, 5, 6, 7, 8]

// 내림차순으로 정렬
numbers.sort(by: >) // [8, 7, 6, 5, 4, 3, 2, 1]

배열 병합하기

배열을 조각낸 후 정렬한 뒤에는 배열을 다시 병합해야 합니다. Swift에서는 + 연산자를 사용하여 두 개의 배열을 병합할 수 있습니다.

let sortedSlice1 = slice1.sorted() // [2, 3, 5, 8]
let sortedSlice2 = slice2.sorted() // [1, 4, 6, 7]
let mergedArray = sortedSlice1 + sortedSlice2 // [2, 3, 5, 8, 1, 4, 6, 7]

전체 코드

아래는 배열을 조각내고 병합하는 전체 코드입니다.

let numbers = [5, 3, 8, 2, 1, 7, 4, 6]
let slice1 = numbers.prefix(upTo: 4)
let slice2 = numbers.suffix(from: 4)

var sortedSlice1 = slice1.sorted()
var sortedSlice2 = slice2.sorted()

let mergedArray = sortedSlice1 + sortedSlice2

print(mergedArray) // [2, 3, 5, 8, 1, 4, 6, 7]

위 코드를 실행하면 주어진 배열을 조각내어 정렬한 후, 다시 병합한 결과를 출력합니다.

이렇게 Swift에서 배열을 조각내고 병합하는 방법을 살펴보았습니다. 이 기능을 활용하여 다양한 알고리즘 및 문제 해결에 유용하게 사용할 수 있습니다.

References