Deep_Dev

๐Ÿ“š ๋ฐฐ์—ด์˜ ๋‹ค์–‘ํ•œ ๋ฉ”์†Œ๋“œ

 

์ •๋ ฌ sort() sorted()

sort()๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ '์›๋ณธ ๋ฐฐ์—ด'์„ ๊ฐ€์ง€๊ณ  ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ์„ ํ•œ๋‹ค.

 

๋ฌผ๋ก  ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ๋„ ์ •๋ ฌ์ด ๊ฐ€๋Šฅํ•˜๋‹ค. ๋งŒ์•ฝ, ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ์„ ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด, sort(by:)๋ฅผ ์‚ฌ์šฉํ•ด์„œ sort(by:>)์™€ ๊ฐ™์ด ์ž‘์„ฑํ•ด์ฃผ๋ฉด ๋œ๋‹ค. 

 

sort(by:)๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•˜๋Š” ๋ฐฉ๋ฒ•๋„ ์žˆ๋‹ค. ๋ฐ”๋กœ sort(by:<)์ด๋‹ค. ๊ธฐ์กด์—์„œ ">"๋ฐฉํ–ฅ๋งŒ ๋ฐ”๊ฟ”์ฃผ๋ฉด ๋œ๋‹ค.

 

ํ•˜์ง€๋งŒ, sort ํ•จ์ˆ˜์˜ default ๊ฐ’์ด ์˜ค๋ฆ„์ฐจ์ˆœ์ด๊ธฐ ๋•Œ๋ฌธ์—, sort(by:<)๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•  ํ•„์š”๋Š” ์—†๋‹ค.

 

์ฝ”๋“œ์˜ˆ์‹œ

var arr = [ 1, 5, 2, 4, 3 ]

// ๊ธฐ๋ณธ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ
arr.sort()

print(arr) // [1, 2, 3, 4, 5]

// ๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌ
arr.sort(by:>)

print(arr) // [5, 4, 3, 2, 1]

 

 

sorted()๋Š” sort์™€ ๋‹ค๋ฅด๊ฒŒ ์›๋ณธ ๋ฐฐ์—ด์€ ๊ฑด๋“œ๋ฆฌ์ง€ ์•Š๊ณ , '์‚ฌ๋ณธ'์„ ๋งŒ๋“ค์–ด์„œ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•œ ํ›„ ์ •๋ ฌ๋œ ์š”์†Œ๋ฅผ ๋ฐ˜ํ™˜ํ•ด์ฃผ๋Š” ๋ฐฉ์‹์ด๋‹ค.

 

๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด, sortํ•จ์ˆ˜์™€ ๋™์ผํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ sorted(by:) ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ด์„œ sorted(by:>)๋กœ ์ž‘์„ฑํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

 

sort์™€ ๋™์ผํ•˜๊ฒŒ sorted()๋งŒ ์ž‘์„ฑํ•ด์ฃผ๋ฉด ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ๋œ๋‹ค.

 

์ฝ”๋“œ์˜ˆ์‹œ

var arr = [ 1, 5, 2, 4, 3 ]

// ๊ธฐ๋ณธ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ
var sotredArr = arr.sorted()

print(arr) // [1, 5, 2, 4, 3]
print(sortedArr) // [1, 2, 3, 4, 5]

// ๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌ
var sortedArrDown = arr.sorted(by:>)

print(srtedArrDown) // [5, 4, 3, 2, 1]

 

 

sort & sorted ์ฐจ์ด์ ๊ณผ ์ฃผ์˜ํ•  ์ 

sort๋Š” '์›๋ณธ ๋ฐฐ์—ด'์ž์ฒด์˜ ์ˆœ์„œ๋ฅผ ๋ณ€๊ฒฝํ•œ๋‹ค๊ณ  ํ–ˆ๋‹ค.

 

๊ทธ๋ ‡๋‹ค๋ฉด, ๊ธฐ์กด์˜ ๋ฐฐ์—ด ์ˆœ์„œ๊ฐ€ ์ค‘์š”ํ•œ ๊ฒฝ์šฐ์— sort๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์–ด๋–ป๊ฒŒ ๋ ๊นŒ ?

๋‹น์—ฐํžˆ ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธด๋‹ค. ์›๋ณธ ๋ฐฐ์—ด์˜ ์ˆœ์„œ๊ฐ€ ์ค‘์š”ํ•œ ์ƒํ™ฉ์ธ๋ฐ, sort๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์›๋ณธ ๋ฐฐ์—ด์˜ ์ˆœ์„œ๊ฐ€ ๋ฐ”๋€Œ์—ˆ์œผ๋‹ˆ ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธด๋‹ค. ๊ทธ๋Ÿฌ๋‹ˆ ๊ธฐ์กด์˜ ๋ฐฐ์—ด ์ˆœ์„œ๊ฐ€ ์ค‘์š”ํ•œ ๊ฒฝ์šฐ์—๋Š” sort๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๊ฒƒ์ด ์ข‹๊ฒ ๋‹ค.

 

๋˜ํ•œ, sorted๋Š” ์›๋ณธ ๋ฐฐ์—ด์˜ '๋ณต์‚ฌ๋ณธ'์„ ๋งŒ๋“ค์–ด์„œ ์‚ฌ์šฉํ•œ๋‹ค๊ณ  ํ–ˆ๋‹ค. 

 

๊ฐ’์„ ๋ณต์ œํ•˜์—ฌ ์‚ฌ์šฉํ•˜๋Š” ๋งŒํผ ๋ฉ”๋ชจ๋ฆฌ์˜ ์‚ฌ์šฉ๋Ÿ‰์€ 2๋ฐฐ๊ฐ€ ๋œ๋‹ค. ๊ฑฐ๊ธฐ๋‹ค sorted๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๊ทธ๋งŒํผ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๋” ๋Š˜์–ด๋‚  ๊ฒƒ์ด๋‹ค. ๊ทธ๋Ÿฌ๋‹ˆ ํฐ ์‚ฌ์ด์ฆˆ์˜ ๋ฐฐ์—ด์—์„œ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด ๊ทธ๋งŒํผ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๋งŽ์ด ์‚ฌ์šฉ๋˜๋ฏ€๋กœ ์ฃผ์˜ํ•ด์•ผ ํ•  ๊ฒƒ์ด๋‹ค.

 

๋’ค์ง‘๊ธฐ reverse() reversed()

 

๊ธฐ์กด ๋ฐฐ์—ด์˜ ์ˆœ์„œ๋ฅผ ๊ฑฐ๊พธ๋กœ ๋’ค์ง‘๋Š” ๋ฐฉ๋ฒ•์€ reverse()๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค. ์‹œ๊ฐ„๋ณต์žก๋„๋Š” O(n)

var array = [1,3,5,2,4,6]
array.reverse()
print(array) // [6,4,2,5,3,1]

 

reversed()๋Š” ๊ธฐ์กด ๋ฐฐ์—ด์€ ๊ทธ๋Œ€๋กœ ๋‘๊ณ  ์ˆœ์„œ๊ฐ€ ๋’ค์ง‘์–ด์ง„ ์ƒˆ๋กœ์šด ๋ฐฐ์—ด์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ์‹œ๊ฐ„๋ณต์žก๋„๋Š” O(1)

var array = [1,3,5,2,4,6]
array.reversed() // [6,4,2,5,3,1]
print(array) // [1,3,5,2,4,6]

์ƒˆ๋กœ์šด ๋ฐฐ์—ด์„ ๋ฐ˜ํ™˜ํ•˜๊ธฐ ๋•Œ๋ฌธ์— n๋งŒํผ์˜ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๋” ํ•„์š”ํ•˜๊ฒ ์ง€๋งŒ ๋น ๋ฅธ ์ˆ˜ํ–‰์‹œ๊ฐ„์„ ์œ„ํ•ด์„œ๋Š” reversed(0๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๋” ์ข‹์€ ๋ฐฉ๋ฒ•์ด๋‹ค.