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

๐ŸŽ iOS/Swift

[Swift] ์ •๋ ฌ ๋ฉ”์„œ๋“œ ์ •๋ณตํ•˜๊ธฐ (sort(), sorted())

์•ˆ๋…•ํ•˜์„ธ์š” ์ œ์ธ์ž…๋‹ˆ๋‹ค :)
์ด๋ฒˆ ๊ฒŒ์‹œ๊ธ€์—์„œ๋Š” Swift์˜ ์ •๋ ฌ ๋ฉ”์„œ๋“œ์— ๋Œ€ํ•ด ์ •๋ฆฌํ•ด๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

์ •๋ ฌ ๋ฉ”์„œ๋“œ์— ๋Œ€ํ•œ ๊ธฐ๋ณธ์ ์ธ ๋‚ด์šฉ ์ •๋ฆฌ์™€ ๋”๋ถˆ์–ด ์ •๋ ฌ ์กฐ๊ฑด ์„ค์ •, ๋‹ค์ค‘ ์ •๋ ฌ ๋“ฑ ํ™œ์šฉ ๋ฐฉ๋ฒ•๊นŒ์ง€ ์ด์ •๋ฆฌ๋ฅผ ํ•ด๋ณด๊ณ ์ž ์ œ๋ชฉ์„ ์ •๋ณตํ•˜๊ธฐ๋กœ ์ง€์–ด๋ณด์•˜์Šต๋‹ˆ๋‹ค ๐Ÿ˜€ ์ •๋ ฌ ๋ฉ”์„œ๋“œ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ ํ’€์ด ์‹œ์—๋„ ๋งŽ์ด ํ™œ์šฉ์ด ๋˜๋Š” ๋งŒํผ ํ™•์‹คํžˆ ์ •๋ฆฌ๋ฅผ ํ•ด๋‘๊ณ  ๊ธฐ์–ตํ•ด๋‘ก์‹œ๋‹ค!!! 

์ •๋ ฌ ๋ฉ”์„œ๋“œ ๋„ค ๊ฐ€์ง€ ๋น„๊ต

๋จผ์ €, ๊ณต์‹ ๋ฌธ์„œ๋ฅผ ํ†ตํ•ด ๊ธฐ๋ณธ์ ์ธ ๋‚ด์šฉ๋ถ€ํ„ฐ ์ •๋ฆฌํ•ด๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

์ •๋ ฌ ๋ฉ”์„œ๋“œ๋Š” ๊ณต์‹๋ฌธ์„œ์˜ Array ๋ถ€๋ถ„์— ๋‚˜์™€์žˆ๋Š”๋ฐ์š”, ๊ณต์‹ ๋ฌธ์„œ์— ๋‚˜์™€์žˆ๋Š” ๋„ค ๊ฐ€์ง€ ๋ฉ”์„œ๋“œ๋ฅผ ํ•œ๋ฒˆ ์‚ดํŽด๋ด…์‹œ๋‹ค.

(์ •๋ ฌ ๋ฉ”์„œ๋“œ๋Š” Array์—์„œ๋งŒ ์‚ฌ์šฉ๊ฐ€๋Šฅํ•œ ๋ฉ”์„œ๋“œ๋Š” ์•„๋‹ˆ๊ณ , RandomAccessCollection ํ”„๋กœํ† ์ฝœ์„ ์ค€์ˆ˜ํ•˜๋Š” ์ปฌ๋ ‰์…˜ ํƒ€์ž…์ด๋ผ๋ฉด ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค!)

๋‘ ๊ฐ€์ง€ ๊ธฐ์ค€์œผ๋กœ ๋‘๊ฐœ์”ฉ ๋ฌถ์„ ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

 

1. ์›๋ณธ ์‹œํ€€์Šค ๋ณ€๊ฒฝ์—ฌ๋ถ€

  • ์›๋ณธ ์‹œํ€€์Šค ์ž์ฒด๋ฅผ ์ •๋ ฌ๋œ ์‹œํ€€์Šค๋กœ ๋ณ€๊ฒฝ: sort(), sort(by: )
  • ์›๋ณธ ์‹œํ€€์Šค๋Š” ๊ทธ๋Œ€๋กœ ๋‘๊ณ  ์ •๋ ฌ๋œ ์ƒˆ๋กœ์šด ์‹œํ€€์Šค๋ฅผ ๋ฆฌํ„ด: sorted(), sorted(by: )

sort()์™€ sort(by: ) ๋ฉ”์„œ๋“œ๋Š” ์›๋ณธ ์ž์ฒด๋ฅผ ์ •๋ ฌ๋œ ์‹œํ€€์Šค๋กœ ๋ณ€๊ฒฝํ•˜๊ธฐ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํ•จ์ˆ˜์˜ ๋ฆฌํ„ด ๊ฒฐ๊ณผ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. 

์ด์™€ ๋‹ฌ๋ฆฌ, sorted(), sorted(by: )๋Š” ์›๋ณธ์€ ๊ทธ๋Œ€๋กœ ๋‘๊ณ  ์ •๋ ฌ ๊ธฐ์ค€์— ๋”ฐ๋ผ ์ •๋ ฌํ•œ ์ƒˆ๋กœ์šด ์‹œํ€€์Šค๋ฅผ ํ•จ์ˆ˜์˜ ๊ฒฐ๊ณผ ๊ฐ’์œผ๋กœ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

 

์˜ˆ์‹œ๋กœ ๊ฐ„๋‹จํ•œ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ด๋ณด์•˜๋Š”๋ฐ์š”, ๋‘ ๋ฉ”์„œ๋“œ์˜ ์ฐจ์ด์ ์ด ํ•œ๋ˆˆ์— ๋“ค์–ด์˜ค๋„ค์š”!
sort() ๋ฉ”์„œ๋“œ ์‚ฌ์šฉ ์‹œ ํ•œ๊ฐ€์ง€ ์ฃผ์˜ํ•  ์ ์€ mutable ์ปฌ๋ ‰์…˜์— ๋Œ€ํ•ด์„œ๋งŒ sort()๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. (์›๋ณธ ์ปฌ๋ ‰์…˜์„ ๋ณ€๊ฒฝํ•˜๋Š” ๋ฉ”์„œ๋“œ์ด๋‹ˆ ๋‹น์—ฐํ•จ) ์œ„์™€ ๊ฐ™์ด 
let์œผ๋กœ ์„ ์–ธํ•œ ๋ฐฐ์—ด์— sort()๋ฅผ ์‚ฌ์šฉํ•ด์ฃผ๋‹ˆ ์—๋Ÿฌ๋ฅผ ๋ฑ‰์–ด๋‚ด๊ฒŒ ๋ฉ๋‹ˆ๋‹ค!

 

2. ์ •๋ ฌ ๊ธฐ์ค€ ์ •์˜ ๋ฐฉ๋ฒ•

  • Element๊ฐ€ Comparable ํ”„๋กœํ† ์ฝœ ์ค€์ˆ˜: sort(), sorted()
  • (Element, Element) -> Bool ํด๋กœ์ €๋กœ ์ „๋‹ฌ: sort(by: ), sorted(by: )

์ด๋ฒˆ์—” ์ •๋ ฌ ๊ธฐ์ค€ ์ •์˜ ๋ฐฉ๋ฒ•์„ ๊ธฐ์ค€์œผ๋กœ ๋น„๊ตํ•ด๋ด…์‹œ๋‹ค!

"Available when Element conforms to Comparable."

sort()์™€ sorted() ๋ฉ”์„œ๋“œ๋Š” ์š”์†Œ๊ฐ€ Comparable ํ”„๋กœํ† ์ฝœ์„ ์ค€์ˆ˜ํ•˜๋Š” ํƒ€์ž…์ผ ๋•Œ ์‚ฌ์šฉ๊ฐ€๋Šฅํ•œ ๋ฉ”์„œ๋“œ์ธ๋ฐ์š”,

Comparable ํ”„๋กœํ† ์ฝœ์ด๋ž€? ๋ง ๊ทธ๋Œ€๋กœ '๋น„๊ต๊ฐ€๋Šฅํ•œ' ํƒ€์ž…์ด๋ผ๋Š” ๋œป์ž…๋‹ˆ๋‹ค.

์ด๋ฅผ ์ค€์ˆ˜ํ•˜๋Š” ํƒ€์ž…์€ ๋น„๊ต์—ฐ์‚ฐ์ž(<<=>=, >)๋ฅผ ์‚ฌ์šฉํ•ด ๋น„๊ต๊ฐ€ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

 

(๐Ÿ”ฝ ๋” ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์•„๋ž˜ ๊ณต์‹๋ฌธ์„œ ์ฐธ๊ณ !)

 

Comparable | Apple Developer Documentation

A type that can be compared using the relational operators , , , and .

developer.apple.com

์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ๋œ ๊ฒฐ๊ณผ

Comparable์„ ์ค€์ˆ˜ํ•˜๋Š” ๋น„๊ต๊ฐ€๋Šฅํ•œ ์š”์†Œ๋“ค๋กœ ์ด๋ฃจ์–ด์ง„ ์ปฌ๋ ‰์…˜์— sort(), sorted() ๋ฉ”์„œ๋“œ๋ฅผ ์ด์šฉํ•˜๋ฉด ์ปฌ๋ ‰์…˜ ์š”์†Œ๋“ค์€ ์œ„์™€ ๊ฐ™์ด ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ๋ฉ๋‹ˆ๋‹ค.(Int, String ๋ชจ๋‘ Comparable ์ค€์ˆ˜ ํƒ€์ž…)

< ์—ฐ์‚ฐ์ž๊ฐ€ ์ ์šฉ๋œ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ์ด default์ด๊ณ , ๋‹ค๋ฅธ ์ •๋ ฌ ๊ธฐ์ค€์„ ์ ์šฉํ•ด์ฃผ๊ณ  ์‹ถ๋‹ค๋ฉด by ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ์ •๋ ฌ ๊ธฐ์ค€์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ƒฅ ๊ฐ„๋‹จํ•˜๊ฒŒ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ์„ ์›ํ•œ๋‹ค๋ฉด sort()๋‚˜ sorted()๋ฅผ ์‚ฌ์šฉํ•ด์ฃผ๋ฉด ๋œ๋‹ค๋Š” ๊ฒƒ!

 

(Element, Element) -> Bool ํด๋กœ์ €

์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ ์ด์™ธ์— ๋‹ค๋ฅธ ์ •๋ ฌ ๊ธฐ์ค€์„ ์„ค์ •ํ•˜๊ณ  ์‹ถ์„ ๋•Œ, ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ฉ”์„œ๋“œ๊ฐ€ sort(by:), sorted(by:) ๋‘ ๊ฐ€์ง€ ๋ฉ”์„œ๋“œ ์ž…๋‹ˆ๋‹ค.

by๋ผ๋Š” ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์ด์šฉํ•ด ์ •๋ ฌ ๊ธฐ์ค€์„ ์„ค์ •ํ•ด์ค„ ์ˆ˜ ์žˆ๋Š”๋ฐ์š”, ์ด ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ๋Š” ํด๋กœ์ €๊ฐ€ ์ „๋‹ฌ๋ฉ๋‹ˆ๋‹ค!

ํด๋กœ์ €๋Š” (Element, Element) -> Bool ์ด๋Ÿฌํ•œ ํ˜•ํƒœ๋กœ, ๋‘ ๊ฐœ์˜ ์ธ์ž๋ฅผ ๊ฐ€์ง€๊ณ  Bool ํƒ€์ž…์˜ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

์ด ๋ฐ˜ํ™˜ ๊ฐ’์€ ์ฒซ ๋ฒˆ์งธ ์ธ์ˆ˜๊ฐ€ ๋‘ ๋ฒˆ์งธ ์ธ์ˆ˜๋ณด๋‹ค ๋จผ์ € ์ •๋ ฌ๋˜์–ด์•ผ ํ•˜๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

์ฆ‰, ์ฒซ ๋ฒˆ์งธ ์ธ์ˆ˜๊ฐ€ ๋‘๋ฒˆ์งธ ์ธ์ˆ˜๋ณด๋‹ค ๋จผ์ € ์ •๋ ฌ๋˜์–ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ true๋ฅผ, ๋ฐ˜๋Œ€์˜ ๊ฒฝ์šฐ false๋ฅผ ๋ฆฌํ„ดํ•˜๊ฒŒ ๋˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

 

ํŒŒ๋ผ๋ฏธํ„ฐ ์ด๋ฆ„ ์ƒ๋žต ํ›„ ํ›„ํ–‰ ํด๋กœ์ €๋กœ ํ‘œํ˜„

๊ฐ„๋‹จํ•œ ๋ฐฐ์—ด์˜ ์ •๋ ฌ ๊ณผ์ •์—์„œ ํด๋กœ์ €์˜ ์ธ์ž๋กœ ์–ด๋–ค ์š”์†Œ๊ฐ€ ์ „๋‹ฌ๋˜๋Š”์ง€, ์–ด๋–ค ๊ฐ’์ด ๋ฐ˜ํ™˜๋˜๋Š”์ง€ ์‚ดํŽด๋ด…์‹œ๋‹ค!

ํด๋กœ์ €์˜ ์ธ์ž๋กœ ๋ฐฐ์—ด์˜ ์•ž์—์„œ ๋ถ€ํ„ฐ ๋‘ ๊ฐœ ์š”์†Œ์”ฉ ์ „๋‹ฌ์ด ๋˜๊ณ  (index0, index1์„ ์˜ˆ์ƒํ–ˆ๋Š”๋ฐ ์ˆœ์„œ๊ฐ€ ๋ฐ”๋€Œ์–ด์„œ index1, index0 ์ด๋Ÿฐ์‹์œผ๋กœ ์ „๋‹ฌ๋˜๋„ค์š”?) ์„ค์ •ํ•œ ์กฐ๊ฑด์— ๋”ฐ๋ผ Bool ํƒ€์ž… ์š”์†Œ๊ฐ€ ๋ฐ˜ํ™˜๋˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

a < b๋ฅผ ๋งŒ์กฑํ•œ๋‹ค๋ฉด true, ์•„๋‹ˆ๋ผ๋ฉด false๊ฐ€ ๋ฆฌํ„ด๋˜๊ณ  ์žˆ๋Š”๋ฐ,

์ธ๋ฑ์Šค ๋ฒˆํ˜ธ๊ฐ€ ํฐ ์š”์†Œ๊ฐ€ a์— ์ „๋‹ฌ๋˜๋‹ˆ true์ธ ๊ฒฝ์šฐ ์š”์†Œ์˜ ์ˆœ์„œ๊ฐ€ ๋ฐ”๋€Œ๊ฒ ๋„ค์š”!

(์„ธ๋ฒˆ์งธ ๋น„๊ต์—์„œ true ๋ฆฌํ„ด ์ดํ›„ ๋„ค๋ฒˆ์งธ ๋น„๊ต์—์„œ ํด๋กœ์ € ์ธ์ž๋กœ ์ „๋‹ฌ๋˜๋Š” ๊ฐ’์„ ํ™•์ธํ•ด๋ณด๋ฉด ์ˆœ์„œ๊ฐ€ ๋ฐ”๋€Œ๊ณ  ์•ž์˜ ๊ฐ’์ธ 2์™€ ๋‹ค์‹œ ํ•œ๋ฒˆ ๋น„๊ต)

 

ํด๋กœ์ € ํ˜•ํƒœ๋กœ ์ „๋‹ฌ๋˜๋Š” ์ •๋ ฌ ๊ธฐ์ค€์ด ์ ์šฉ๋˜๋Š” ์›๋ฆฌ๊ฐ€ ์ดํ•ด๋˜์‹œ๋‚˜์š”? 

๋ฉ”์„œ๋“œ์˜ ํŒŒ๋ผ๋ฏธํ„ฐ๊ฐ€ ํ•˜๋‚˜์ด๊ธฐ ๋•Œ๋ฌธ์— ์œ„์™€ ๊ฐ™์ด ํŒŒ๋ผ๋ฏธํ„ฐ ์ด๋ฆ„ ์ƒ๋žต ํ›„ ํ›„ํ–‰ ํด๋กœ์ €๋กœ๋„ ํ‘œํ˜„์ด ๊ฐ€๋Šฅํ•˜๊ณ , ํด๋กœ์ € ๊ฒฝ๋Ÿ‰ ๋ฌธ๋ฒ•์„ ์ ์šฉํ•ด ์ƒ๋žตํ•ด์„œ ์•„๋ž˜์™€ ๊ฐ™์ด ๊ฐ„๋‹จํ•˜๊ฒŒ ํ‘œํ˜„๋„ ๋‹น์—ฐํžˆ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค!!

 

ํด๋กœ์ €๋ฅผ ์ด์šฉํ•œ ๋‹ค์–‘ํ•œ ์ •๋ ฌ ๊ธฐ์ค€ ์„ค์ • ๋ฐ ๋‹ค์ค‘ ์ •๋ ฌ

์‚ฌ์‹ค ๋‹จ์ˆœํžˆ ์˜ค๋ฆ„์ฐจ์ˆœ, ๋‚ด๋ฆผ์ฐจ์ˆœ ๋ณด๋‹ค ์›ํ•˜๋Š” ์กฐ๊ฑด์— ๋”ฐ๋ผ ์ •๋ ฌํ•˜๊ณ  ์‹ถ์„ ๋•Œ๊ฐ€ ๋” ๋งŽ์ฃ ?? (์•„๋‹˜ ๋ง๊ตฌ)

ํด๋กœ์ €๋ฅผ ์ด์šฉํ•ด ์›ํ•˜๋Š” ์ •๋ ฌ ๊ธฐ์ค€ ์„ค์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•, ๊ทธ๋ฆฌ๊ณ  ์ข€ ๋” ๋ณต์žกํ•˜๊ฒŒ ์—ฌ๋Ÿฌ ๊ฐœ ์ •๋ ฌ ๊ธฐ์ค€์„ ์šฐ์„ ์ˆœ์œ„์— ๋”ฐ๋ผ ์ ์šฉํ•˜๋Š” ๋‹ค์ค‘ ์ •๋ ฌ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด์„œ๋„ ์•Œ์•„๋ด…์‹œ๋‹ค!

๋‹ค์–‘ํ•œ ์ •๋ ฌ ๊ธฐ์ค€ ์„ค์ •ํ•ด๋ณด๊ธฐ

1. ๊ธ€์ž ์ˆ˜ ๊ธฐ์ค€ ์ •๋ ฌ

์œ„์—์„œ ๋ดค๋˜ student ๋ฐฐ์—ด์„ ์•ŒํŒŒ๋ฒณ ์ˆœ์ด ์•„๋‹Œ, ๊ธ€์ž ์ˆ˜๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์ •๋ ฌํ•ด๋ณด๋ฉด, ์•„๋ž˜์™€ ๊ฐ™์ด ์ด๋ฆ„์˜ ๊ธธ์ด๊ฐ€ ์งง์€ ํ•™์ƒ์ด ์•ž์— ์˜ค๋„๋ก ์ •๋ ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

var students = ["Kofi", "Abena", "Peter", "Kweku", "Akosua"]
students.sort { $0.count < $1.count }

print(students) // ["Kofi", "Abena", "Peter", "Kweku", "Akosua"]

2. ์˜ˆ์™ธ๊ฐ€ ์žˆ๋Š” ์ •๋ ฌ ์กฐ๊ฑด ์„ค์ •

์˜ˆ์™ธ ์ผ€์ด์Šค๊ฐ€ ์žˆ๋Š” ์ •๋ ฌ ์กฐ๊ฑด์„ ์„ค์ •ํ•ด๋ด…์‹œ๋‹ค.

์˜ˆ์™ธ ์ผ€์ด์Šค๋Š” ์กฐ๊ฑด๋ฌธ์„ ์ด์šฉํ•ด ์ฒ˜๋ฆฌํ•ด์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

arr = arr.sorted {
    if $0[0].lowercased() == $1[0].lowercased() { // head๊ฐ€ ๊ฐ™๋‹ค๋ฉด(๋Œ€์†Œ๋ฌธ์ž ์ฐจ์ด ์ œ์™ธ)
        if Int($0[1])! == Int($1[1])! { // number์˜ ์ˆซ์ž๋„ ๊ฐ™๋‹ค๋ฉด
            return false // ์›๋ž˜ ์ž…๋ ฅ์— ์ฃผ์–ด์ง„ ์ˆœ์„œ ์œ ์ง€
        }
        return Int($0[1])! < Int($1[1])! // ๋„˜๋ฒ„ ์ˆœ์œผ๋กœ ์ •๋ ฌ
    }
    return $0[0].lowercased() < $1[0].lowercased() // ๋””ํดํŠธ ์ •๋ ฌ ๊ธฐ์ค€
}

์œ„์˜ ์ฝ”๋“œ๋Š” ์นด์นด์˜ค ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ๊ธฐ์ถœ ๋ฌธ์ œ์ธ <[3์ฐจ] ํŒŒ์ผ๋ช… ์ •๋ ฌ> ๋ฌธ์ œ(์ •๋ ฌ ์—ฐ์Šตํ•˜๊ธฐ ์ข‹์€ ๋ฌธ์ œ!) ํ’€์ด์—์„œ ๊ฐ€์ ธ์˜จ ์ฝ”๋“œ์ธ๋ฐ์š”,

๊ธฐ๋ณธ ์ •๋ ฌ ๊ธฐ์ค€์ด ์กด์žฌํ•˜์ง€๋งŒ ์˜ˆ์™ธ ์ผ€์ด์Šค์— ํ•œํ•ด์„œ๋งŒ ํŠน์ • ์กฐ๊ฑด์„ ๊ฑธ์–ด์ฃผ๊ณ  ์‹ถ์„ ๋•Œ ์œ„์™€ ๊ฐ™์ด if๋ฌธ์„ ์‚ฌ์šฉํ•ด์„œ ์กฐ๊ฑด์„ ์„ค์ •์„ ํ•ด์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค! ์œ„์—์„œ true๊ฐ€ ๋ฐ˜ํ™˜๋˜๋Š” ๊ฒฝ์šฐ ์ˆœ์„œ๊ฐ€ ๋ฐ”๋€Œ๋Š” ๊ฒƒ์„ ํ™•์ธํ–ˆ์ฃ ?? ๋ฐ˜๋Œ€๋กœ ํŠน์ • ๊ฒฝ์šฐ์—๋งŒ ์›๋ž˜ ์ˆœ์„œ๋ฅผ ์œ ์ง€(= ์ •๋ ฌ ์กฐ๊ฑด ์ ์šฉx)ํ•ด์ฃผ๊ณ  ์‹ถ๋‹ค๋ฉด false๋ฅผ ๋ฆฌํ„ดํ•ด์ฃผ๋„๋ก ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค!

๋‹ค์ค‘ ์ •๋ ฌ

let cards = [["2", "D"], ["1", "C"], ["8", "A"], ["5", "B"], ["4", "A"]]
var sortedCards = cards.sorted {
    return $0[1] < $1[1] || $0[0] > $1[0]
}

// 1์ˆœ์œ„: ์•ŒํŒŒ๋ฒณ ์ˆœ
// 2์ˆœ์œ„: ์ˆซ์ž ๊ธฐ์ค€ ๋‚ด๋ฆผ์ฐจ์ˆœ
print(sortedCards) // [["8", "A"], ["4", "A"], ["5", "B"], ["1", "C"], ["2", "D"]]

์—ฌ๋Ÿฌ ์กฐ๊ฑด์„ ์ ์šฉํ•˜๋Š”๋ฐ, ์กฐ๊ฑด์— ์šฐ์„ ์ˆœ์œ„๋ฅผ ๋‘๊ณ  ์ •๋ ฌํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ์—๋Š” or ์—ฐ์‚ฐ์ž(||)๋ฅผ ์ด์šฉํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค!

2์ฐจ์› ์ด์ƒ์˜ ๋ฐฐ์—ด์—์„œ ๋‹ค์ค‘ ์ •๋ ฌ์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์„ ๊ฒƒ ๊ฐ™์€๋ฐ์š”, ์œ„์˜ ์˜ˆ์ œ์ฒ˜๋Ÿผ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์กฐ๊ฑด์„ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’์€ ์ˆœ์„œ๋Œ€๋กœ || ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•ด ๋‚˜์—ดํ•ด์ฃผ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

 

์œ„ ์˜ˆ์ œ ์ฝ”๋“œ์˜ ๊ฒฝ์šฐ, index 0์—๋Š” ์ˆซ์ž๊ฐ€, index 1์—๋Š” ๋ฌธ์ž๊ฐ€ ์žˆ๋Š” ์นด๋“œ๊ฐ€ ์—ฌ๋Ÿฌ๊ฐœ ๋‹ด๊ฒจ์žˆ๋Š” 2์ฐจ์› ๋ฐฐ์—ด์ธ cards๋ฅผ ์ •๋ ฌํ•ด์ฃผ๋Š” ์˜ˆ์ œ์ž…๋‹ˆ๋‹ค. ์ •๋ ฌ ์กฐ๊ฑด์€ ์•ŒํŒŒ๋ฒณ ์ˆœ์œผ๋กœ ์šฐ์„  ์ •๋ ฌํ•˜๊ณ , ๊ทธ ๋‹ค์Œ ์ˆœ์ž ๊ธฐ์ค€ ๋‚ด๋ฆผ์ฐจ์ˆœ(์ˆซ์ž๊ฐ€ ํฐ ์นด๋“œ๊ฐ€ ์•ž์— ์˜ค๋„๋ก)์ž…๋‹ˆ๋‹ค.

ํ”„๋ฆฐํŠธ๋ฅผ ํ™•์ธํ•˜๋ฉด ์•ŒํŒŒ๋ฒณ ์ˆœ์œผ๋กœ ๋จผ์ € ์ •๋ ฌ๋˜๊ณ , ์•ŒํŒŒ๋ฒณ์ด ๊ฐ™์€ ๊ฒฝ์šฐ ๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌ์ด ์ ์šฉ๋˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.