๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Swift

[Swift] ํŠœํ”Œ ๋ฐฐ์—ด, ์ด์ฐจ์› ๋ฐฐ์—ด, ๊ฐ์ฒด ๋ฐฐ์—ด ์ •๋ ฌํ•˜๊ธฐ

by lizzydev 2023. 3. 14.

์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ํ’€๋‹ค๋ณด๋ฉด ์ด์ฐจ์› ๋ฐฐ์—ด์ด๋‚˜ ํŠœํ”Œ,๊ฐ์ฒด๋ฅผ ์›ํ•˜๋Š” ์กฐ๊ฑด๋Œ€๋กœ ์ •๋ ฌํ•˜๊ณ  ์‹ถ์„ ๋•Œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿด ๋•Œ ์–ด๋–ป๊ฒŒ ํ•ด์•ผํ•˜๋Š”์ง€ ์•Œ์•„๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

์ •์„์ ์œผ๋กœ ์กฐ๊ฑด๋ฌธ ์ด์šฉํ•ด์„œ ์ •๋ ฌํ•˜๋Š” ๊ฒƒ๊ณผ ๋ฐ‘์— ์ชฝ์—์„œ๋Š” ํŠœํ”Œ์„ ์ด์šฉํ•ด์„œ ๊ฐ„๋‹จํ•˜๊ฒŒ ํ•œ ์ค„๋กœ ์ •๋ ฌ ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฐ์ฒด ์ •๋ ฌ

struct Movie {
    let title: String
    let year: Int
    let director: String
}

let movieList = [
    Movie(title: "Star Wars", year: 1898, director: "Leorge Mucas"),
    Movie(title: "A Star", year: 1922, director: "Michal Platpus"),
    Movie(title: "Be yourself", year: 1700, director: "Coey Vamn"),
    Movie(title: "The big bang", year: 2011, director: "Rom Natas"),
    Movie(title: "The big bang", year: 1922, director: "Adra Kngr"),
    Movie(title: "Finding Nemoy", year: 2022, director: "Raxip"),
    Movie(title: "The big bang", year: 2011, director: "Jos Klimbr")
]

ํ•œ ๊ฐ€์ง€ ๊ธฐ์ค€์œผ๋กœ ์ •๋ ฌํ•˜๊ธฐ

์ œ๋ชฉ ์˜ค๋ฆ„์ฐจ ์ˆœ ํ•œ ๋’ค ์ œ๋ชฉ์ด ๊ฐ™์œผ๋ฉด ๋‚˜๋จธ์ง€๋Š” ์ •๋ ฌ ์ „ ๋ฐฐ์—ด ์ˆœ์„œ ๊ธฐ์ค€

 

let sortedMovieList = movieList.sorted { // Mark 1
    $0.title < $1.title
}

for movie in sortedMovieList {
    print(movie)
}

๋‘ ๊ฐ€์ง€ ๊ธฐ์ค€์œผ๋กœ ์ •๋ ฌํ•˜๊ธฐ

์ œ๋ชฉ ์˜ค๋ฆ„์ฐจ์ˆœ → ์ œ๋ชฉ์ด ๊ฐ™์œผ๋ฉด ์—ฐ๋„ ์˜ค๋ฆ„์ฐจ์ˆœ → ์—ฐ๋„๊ฐ€ ๊ฐ™์œผ๋ฉด ์ •๋ ฌ ์ „ ๋ฐฐ์—ด ์ˆœ์„œ ๊ธฐ์ค€

let sortedMovieList = movieList.sorted {
    if $0.title == $1.title { // Mark 1
        return $0.year < $1.year // Mark 2
    }
    return $0.title < $1.title // Mark 3
}

for movie in sortedMovieList {
    print(movie)
}

์„ธ๊ฐ€์ง€ ๊ธฐ์ค€์œผ๋กœ ์ •๋ ฌํ•˜๊ธฐ

์ œ๋ชฉ ์˜ค๋ฆ„์ฐจ์ˆœ → ์ œ๋ชฉ์ด ๊ฐ™์œผ๋ฉด ์—ฐ๋„ ์˜ค๋ฆ„์ฐจ์ˆœ → ์—ฐ๋„๊ฐ€ ๊ฐ™์œผ๋ฉด ๊ฐ๋… ์˜ค๋ฆ„์ฐจ์ˆœ

let sortedMovieList = movieList.sorted {
    if $0.title == $1.title {
        if $0.year == $1.year {
            return $0.director < $1.director
        }
        return $0.year < $1.year
    }
    return $0.title < $1.title
}

for movie in sortedMovieList {
    print(movie)
}

์กฐ๊ฑด๋ฌธ์ด ์•„๋‹Œ ํŠœํ”Œ ์ด์šฉํ•ด์„œ ์ •๋ ฌํ•˜๊ธฐ

ํŠœํ”Œ๋ผ๋ฆฌ ๊ฐ’์˜ ๋น„๊ต๋ฅผ ํ•  ๋•Œ๋Š”, ์•ž ์š”์†Œ๋ผ๋ฆฌ ๊ฐ๊ฐ ์ˆœ์„œ๋Œ€๋กœ ํฌ๊ธฐ ๋น„๊ต๋ฅผ ํ•  ์ˆ˜ ์žˆ๋‹ค.

let sortedMovieList = movieList.sorted {
    ($0.title, $0.year, $0.director) < ($1.title, $1.year, $1.director)
}

์šฐ์„ ์ˆœ์œ„ ์ˆœ์„œ ๋ฐ”๊พธ๊ธฐ

let sortedMovieList = movieList.sorted {
    ($0.year, $0.title, $0.director) < ($1.year, $1.title, $1.director)
}

ํ•˜๋‚˜๋งŒ ์—ญ์ˆœ

let sortedMovieList = movieList.sorted {
    ($0.title, $1.year, $0.director) < ($1.title, $0.year, $1.director)
}

for movie in sortedMovieList {
    print(movie)
}

์ด์ฐจ์› ๋ฐฐ์—ด ์ •๋ ฌ

let unsorted = [ [1,2] , [12,4] ,[12,1] ]
let sorted = unsorted.sorted {
    ($0[0] , $0[1] ) < ( $1[0] , $1[1] )
}
print( sorted) // output [[1, 2], [12, 1], [12, 4]]
let unsorted = [ [1,2] , [12,4] ,[12,1] ]
let sorted = unsorted.sorted {
    ($0[0] , $1[1] ) < ( $1[0] , $0[1] )
}
print(sorted) // [[1, 2], [12, 4], [12, 1]]

ํŠœํ”Œ ๋ฐฐ์—ด ์ •๋ ฌ

let unsorted = [ (1,2) , (12,4) ,(12,1) ]
let sorted = unsorted.sorted {
    ($0.0 , $0.1 ) < ( $1.0 , $1.1 )
}
print( sorted) // output [(1, 2), (12, 1), (12, 4)]
let unsorted = [ (1,2) , (12,4) ,(12,1) ]
let sorted = unsorted.sorted {
    ($0.0 , $1.1 ) < ( $1.0 , $0.1 )
}
print( sorted) // output [(1, 2), (12, 4), (12, 1)]

Reference

[Swift] Nested Array (2์ฐจ์› ๋ฐฐ์—ด)์—์„œ ํŠœํ”Œ์„ ์ด์šฉํ•ด ๋‹ค์ค‘ ์ •๋ ฌํ•˜๋Š” ๋ฒ• (sort, tuple, Closure)

 

[Swift] Nested Array (2์ฐจ์› ๋ฐฐ์—ด)์—์„œ ํŠœํ”Œ์„ ์ด์šฉํ•ด ๋‹ค์ค‘ ์ •๋ ฌํ•˜๋Š” ๋ฒ• (sort, tuple, Closure)

์Šค์œ„ํ”„ํŠธ Array(๋ฐฐ์—ด)์€ ์ˆœ์„œ๊ฐ€ ์žˆ๋Š” Ordered Collection Type ์ด๋‹ค. Array๋ฅผ 2์ค‘์œผ๋กœ ๋งŒ๋“ค์–ด์„œ ์ •๋ ฌ(sort)์„ ๊ณต๋ถ€ํ•ด๋ณด์ž. ๋จผ์ €, sort() ์™€ sorted() ์ •๋ ฌ ๋ฉ”์†Œ๋“œ์˜ ์ฐจ์ด๋ฅผ ์•Œ์•„์•ผ ํ•œ๋‹ค. sort ๋Š” ์›๋ณธ๊ฐ’์— ์˜ํ–ฅ์„ ์ฃผ

bicycleforthemind.tistory.com

Using Tuples to do Sorting Operations in Swift - Holy Swift

 

Using Tuples to do Sorting Operations in Swift - Holy Swift

This is a tutorial guide on how to use Tuples to do Sorting Operations in Swift. Learn how to use this data structure in your code.

holyswift.app

Sorting using tuples | Functional Swift

 

Sorting using tuples | Functional Swift

Sorting using tuples Say we have an array with unordered integers, for example [ 3, 99, 66, 1, 12, 100 , 3] and we need to order their elements. We know that we can use sort it easily with the function sort() var v = [ 3, 99, 66, 1, 12, 100 , 3] v.sort() p

www.instantmirage.com