[swift] 정렬 함수를 사용하여 리스트 원소들을 크기별로 그룹화하기

이번에는 Swift에서 정렬 함수를 사용하여 리스트(List)의 원소들을 크기별로 그룹화하는 방법에 대해 알아보겠습니다.

1. 문제 정의

주어진 리스트의 원소들을 크기별로 나누어 그룹화하는 문제를 해결해야 합니다. 예를 들어, 다음과 같은 리스트가 주어졌다고 가정해봅시다.

let numbers = [1, 5, 2, 7, 3, 9, 4, 6, 8]

이 리스트를 크기별로 그룹화하면 다음과 같은 결과를 얻을 수 있습니다.

[
    [1],
    [2, 3, 4],
    [5, 6, 7],
    [8, 9]
]

2. 해결 방법

정렬 함수를 사용하여 리스트를 오름차순으로 정렬한 후, 크기별로 그룹화하는 방법을 사용하겠습니다.

  1. 주어진 리스트를 정렬합니다.
  2. 정렬된 리스트에서 첫 번째 원소를 선택한 후, 그 다음 원소와 비교합니다.
  3. 이전 원소와 다른 크기의 원소가 나타나면, 새로운 그룹을 생성합니다.
  4. 원소를 순서대로 그룹에 추가합니다.
  5. 모든 원소를 그룹에 추가한 후, 그룹들을 리스트 형태로 반환합니다.

이렇게 구현한 코드는 아래와 같습니다.

func groupBySize(numbers: [Int]) -> [[Int]] {
    let sortedNumbers = numbers.sorted()
    var result = [[Int]]()
    var currentGroup = [Int]()
    
    for i in 0..<sortedNumbers.count {
        if i > 0 && sortedNumbers[i] != sortedNumbers[i-1] + 1 {
            result.append(currentGroup)
            currentGroup = [Int]()
        }
        currentGroup.append(sortedNumbers[i])
    }
    
    result.append(currentGroup)
    return result
}

3. 테스트

위에서 작성한 groupBySize 함수를 사용하여 결과를 확인해보겠습니다.

let numbers = [1, 5, 2, 7, 3, 9, 4, 6, 8]
let groupedNumbers = groupBySize(numbers: numbers)
print(groupedNumbers)

출력 결과는 다음과 같습니다.

[
    [1],
    [2, 3, 4],
    [5, 6, 7],
    [8, 9]
]

4. 결론

Swift에서는 정렬 함수를 활용하여 리스트의 원소들을 크기별로 그룹화할 수 있습니다. 이를 통해 다양한 형태의 데이터를 쉽게 정렬하여 처리할 수 있습니다.