배열의 정렬
프로그래머스에서 문제를 풀던 중 배열을 정렬해야 하는 상황이 나왔다. 배열을 이용해 문제를 풀게되면 정렬을 하는 상황이 자주 발생한다. 하지만 매번 구현하는 것은 매우 번거롭고 귀찮다. 따라서 배열에 이미 정의되어 있는 sort메소드를 사용하면 매우 간단하게 정렬을 할 수 있다.
sort()
스위프트에서 Array 에는 sort()라는 메소드가 있다. 이 메소드는 기본적으로 배열을 오름차순으로 정렬을 해주는 메소드이다.
var arr = [4, 2, 6, 5, 8, 1]
arr.sort()
print(arr)
// [1, 2, 4, 5, 6, 8]
하지만 배열을 정렬할 때 내림차순으로 정렬을 하는 상황도 있다. 이 때 sort(by:)를 사용하면 된다. sort(:by >) 로 입력하면 배열을 내림차순으로 정렬해준다.
var arr = [4, 2, 6, 5, 8, 1]
arr.sort(by: >)
print(arr)
// [8, 6, 5, 4, 2, 1]
sorted()
스위프트에서는 sort() 메소드 이외에 sorted() 메소드도 존재한다. sort() 메소드 같은 경우 실제 배열을 정렬해주는 메소드이다. 하지만 sorted() 메소드는 그와 반대로 복사본을 만들어 정렬하고 정렬된 배열을 return 해주는 메소드이다.
var arr = [4, 2, 6, 5, 8, 1]
var arr2 = arr.sorted()
print(arr) // <- 정렬이 되지 않은 원본 배열
print(arr2) // <- 정렬이 완료된 새로운 배열
// [4, 2, 6, 5, 8, 1]
// [1, 2, 4, 5, 6, 8]
sorted() 메소드에서도 sort()와 똑같이 내림차순으로 정렬을 하고 싶다면 sorted(by: >) 를 사용하면 된다.
var arr = [4, 2, 6, 5, 8, 1]
var arr2 = arr.sorted(by: >)
print(arr)
print(arr2)
// [4, 2, 6, 5, 8, 1]
// [8, 6, 5, 4, 2, 1]
배열의 정렬을 하는 메소드인 sort() 와 sorted()에 대한 차이를 알아보았다. sort()는 원본 배열을 수정하여 정렬을 진행하는 메소드이고, sorted()는 원본 배열은 사용하지 않고 복사본 배열을 만든 후 정렬을 진행한다. 따라서 상황에 맞게 사용해주면 된다.
아래 코드는 정수 외에 String 타입에서 적용되는 정렬 예제 코드이다.
// 영어 문자열 정렬 - abc 순서에 맞게 정렬
var arrEng = ["A", "B", "C"]
// 오름차순
arrEng.sort()
print(arrEng)
// 내림차순
arrEng.sort(by: >)
print(arrEng)
// 실행 결과
// ["A", "B", "C"]
// ["C", "B", "A"]
// 한국어 문자열 정렬 - 가나다 순서에 맞게 정렬
var arrKor = ["가", "나", "다"]
// 오름차순
arrKor.sort()
print(arrKor)
// 내림차순
arrKor.sort(by: >)
print(arrKor)
// 실행 결과
// ["가", "나", "다"]
// ["다", "나", "가"]'TIL(Today I Learned)' 카테고리의 다른 글
| 2024.04.17 Today I Learned (1) | 2024.04.17 |
|---|---|
| 2024.04.16 Today I Learned (1) | 2024.04.16 |
| 2024.04.12 Today I Learned (1) | 2024.04.12 |
| 2024.04.09 Today I Learned (1) | 2024.04.09 |
| 2024.04.08 Today I Learned (2) | 2024.04.08 |