โœ๏ธ TIL

[ TIL ] sort์™€ sorted / removeLast์™€ popLast / 24๋…„ 3์›” 11์ผ

EarthSea 2024. 3. 11. 20:51

์ถœ์ฒ˜ : ํ•€ํ„ฐ๋ ˆ์ŠคํŠธ

 

 

์ €.. ์‚ฌ์‹ค ์˜ค๋Š˜ ๋ธ”๊พธํ–ˆ์–ด์š”..ใ…Žใ…Žใ…Ž

๋‚ด์ผ๋ถ€ํ„ฐ ๋‹ค์‹œ ์—ด์‹ฌํžˆ ๋‹ฌ๋ ค๋ณผ๊ฒŒ์š”..๐Ÿ˜„

 

 

 


 

 

 

Swift ๋ฌธ๋ฒ•์„ ์ฒ˜์Œ๋ถ€ํ„ฐ ๋‹ค์‹œ ๋ณด๋‹ˆ ๊ถ๊ธˆํ•œ๊ฒŒ ๋งŽ๋”๋ผ๊ตฌ์š”!

( ํŠน๊ฐ•์—์„œ ๋“ค์€ ๋Œ€๋กœ ๋ญ๋“  ๋ฌผ์Œํ‘œ ์—ด์‹ฌํžˆ ์ฐ์–ด๋ณด๋ ค๊ณ  ํ•จ..ใ…‹ใ…‹ )

 

 

sort ์™€ sorted์˜ ์ฐจ์ด

 

์ œ๊ฐ€ sortํ•จ์ˆ˜์™€ sorted ํ•จ์ˆ˜๊ฐ€ ์žˆ๋‹ค๋Š” ๊ฒƒ์€ ์•Œ์•˜๋Š”๋ฐ, ๊ทธ ์ฐจ์ด๋ฅผ ์•Œ๊ณ  ์žˆ์ง€๋Š” ์•Š์•˜๋”๋ผ๊ตฌ์š”.

 

 


 

Sort

 

์šฐ์„  sort์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด์ž๋ฉด,

sort๋Š” List ๋ผ๋Š” ํด๋ž˜์Šค ๋‚ด์˜ ๋ฉ”์„œ๋“œ์ž…๋‹ˆ๋‹ค.

 

sort ๋ฉ”์„œ๋“œ

 

 

ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ฐ’์€ None์œผ๋กœ ์—†์–ด์š”!

 


 

Sorted

 

๊ทธ๋ ‡๋‹ค๋ฉด sorted๋Š”?!?!

sorted๋Š” iterable ๊ฐ์ฒด๋ฅผ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ๋ฐ›๋Š” ๋ฉ”์„œ๋“œ์ž…๋‹ˆ๋‹ค.

 

sorted ๋ฉ”์„œ๋“œ

 

list, tuple, string, ์ฝœ๋ ‰์…˜( ๋”•์…”๋„ˆ๋ฆฌ, ์ง‘ํ•ฉ, .. ), ... ๋“ฑ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์–ด์š”.

ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ฐ’์€ List๋กœ ๋ฐฐ์—ด์ด ๋ฐ˜ํ™˜์ด ๋ฉ๋‹ˆ๋‹ค.

 


 

์ •๋ฆฌํ•ด๋ณด์ž๋ฉด sort์™€ sorted์˜ ์ฐจ์ด์ ์€ ํฌ๊ฒŒ ๋‘๊ฐ€์ง€๋กœ ๋‚˜๋‰˜์–ด์š”!

 

 

1. sort๋Š” List์—์„œ๋งŒ ์‚ฌ์šฉ ๊ฐ€๋Šฅ, sorted๋Š” List, tuple, ์ปฌ๋ ‰์…˜ ๋“ฑ๋“ฑ ๋‹ค์–‘ํ•œ ํƒ€์ž…์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅ

 

2. sort๋Š” ์•„๋ฌด๊ฒƒ๋„ ๋ฐ˜ํ™˜ํ•˜์ง€ ์•Š์•„์„œ ์ •๋ ฌํ•œ ๊ฐ’์„ ์–ด๋–ค ๊ฐ’์— ๋Œ€์ž…ํ•˜์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‹ˆ sort ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ž๊ธฐ ์ž์‹ ์˜ ๋ฐฐ์—ด์ด ์ •๋ ฌ๋œ ์ฑ„๋กœ ๋ฐ”๋€Œ์ฃ . ๊ทธ๋Ÿฌ๋‚˜ sorted๋Š” ์ •๋ ฌ๋œ ๋ฐฐ์—ด์„ ๋ฐ˜ํ™˜ํ•˜์—ฌ ๋‹ค๋ฅธ ๊ฐ’์— ๋Œ€์ž…์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡๊ธฐ์— ์ž๊ธฐ ์ž์‹ ์˜ ๋ฐฐ์—ด์€ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š๊ณ  sorted๊ฐ€ ๋œ ๋ฐฐ์—ด์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ฑฐ์ฃ .

 

 

๊ทธ๋Ÿผ ์–ด๋–ค ์ƒํ™ฉ์— ๋ญ๋ฅผ ๋Œ€์ž…ํ•ด์•ผ ํ• ๊นŒ์š”?

sorted๋Š” ๊ฐ์ฒด๋ฅผ ๋ฐ›๊ณ  ๋ฐ˜ํ™˜๊ฐ’์ด ์ƒ๊ธฐ๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ์ดํ„ฐ ์–‘์ด ๋งŽ์•„์ง„๋‹ค๋ฉด, sort๋ณด๋‹ค ๋А๋ฆฝ๋‹ˆ๋‹ค. ์ด๋ฅผ ๊ฐ์•ˆํ•ด์„œ ์›๋ž˜์˜ ๊ฐ’์„ ์•Œ ํ•„์š”์—†์ด ์ •๋ ฌ๋œ ๊ฐ’๋งŒ์„ ์ถ”๋ ค๋‚ด๊ณ  ์‹ถ๋‹ค๋ฉด sort๋ฅผ ์“ฐ๋Š” ๊ฒŒ ๋” ์ข‹์•„๋ณด์—ฌ์š”!

 

 

 

 

removeLast์™€ popLast์˜ ์ฐจ์ด์ 

 

์–ด์ œ ํ์™€ ์Šคํƒ์„ ์‚ดํŽด๋ณด๋‹ค๊ฐ€ ํ๋Š” removeLast๋กœ ๋ฐฐ์—ด์˜ ๊ฐ’์„ ์—†์• ๊ณ , ์Šคํƒ์€ popLast๋กœ ๋ฐฐ์—ด์˜ ๊ฐ’์„ ์—†์• ๋Š” ๊ฒƒ์„ ์•Œ๊ฒŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๋‘˜์ด ๋˜‘๊ฐ™์€ ๊ณผ์ •์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐ ์™œ ๋‹ค๋ฅธ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์ง€?! ๋ผ๋Š” ์˜๋ฌธ์ ์ด ์ƒ๊ฒผ์–ด์š”.

 

 


 

removeLast

 

removeLast๋Š” ๋ฐฐ์—ด์˜ ๋งˆ์ง€๋ง‰ ์š”์†Œ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ณ , ๋ฐฐ์—ด์—์„œ ๋งˆ์ง€๋ง‰ ์š”์†Œ๋ฅผ ์‚ญ์ œ์‹œํ‚ค๋Š” ํ•จ์ˆ˜์ž…๋‹ˆ๋‹ค.

 

removeLast ๋ฉ”์„œ๋“œ

 


popLast

 

popLast๋Š” ๋ฐฐ์—ด์˜ ๋งˆ์ง€๋ง‰ ์š”์†Œ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ณ , ๋ฐฐ์—ด์—์„œ ๋งˆ์ง€๋ง‰ ์š”์†Œ๋ฅผ ์‚ญ์ œ์‹œํ‚ค๋Š” ํ•จ์ˆ˜์ž…๋‹ˆ๋‹ค.

 

popLast ๋ฉ”์„œ๋“œ

 

 


 

๋„ค?!? ๋˜‘๊ฐ™์€๊ฑฐ ์•„๋‹ˆ๋ƒ๊ตฌ์š”?!

์•„๋‹™๋‹ˆ๋‹ค. ๋‘˜์€ ๋ฐ˜ํ™˜๊ฐ’์ด ๋‹ฌ๋ผ์š”.

 

removeLast๋Š” ํ‘œ์ค€๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋ฐ˜๋ฉด์— popLast๋Š” ์˜ต์…”๋„๊ฐ’์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

 

var a = [1,2,3,4,5,6,7]
var b = [1,2,3,4,5,6,7]

var removeA = a.removeLast()
var removeB = b.popLast()

print(removeA) // 7
print(removeB) // Optional(7)

print(a) // [1, 2, 3, 4, 5, 6]
print(b) // [1, 2, 3, 4, 5, 6]

 

์™œ ๊ตณ์ด ์ด๋ ‡๊ฒŒ ๋งŒ๋“ค์—ˆ์ง€? ๋ผ๊ณ  ์ƒ๊ฐํ•œ๋‹ค๋ฉด ์ œ ์ƒ๊ฐ์—๋Š” ์ด ๋ถ€๋ถ„์ผ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

 

a = []
b = []

//removeA = a.removeLast() // ๐Ÿšจ Error
removeB = b.popLast()

print(removeB) // nil

 

 

๋‘ ๊ฐœ์˜ ๋ฐฐ์—ด์ด ๋น„์–ด์žˆ์„ ๋•Œ,

removeLast์˜ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด, ์—๋Ÿฌ๊ฐ€ ๋‚  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ฐ’์ด ์•„๋ฌด๊ฒƒ๋„ ์—†๊ธฐ ๋•Œ๋ฌธ์ด์ฃ .

ํ•˜์ง€๋งŒ, popLast์˜ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด, nil๊ฐ’์„ ๋ฐ˜ํ™˜ํ•œ์ฑ„ ์ปดํŒŒ์ผ์—๋Ÿฌ๊ฐ€ ๋‚˜์ง€ ์•Š์„๊ฑฐ์—์š”.

 

๊ทธ๋ž˜์„œ ๋ฐฐ์—ด์˜ ๊ฐ’์ด ์—†๋Š” ๊ฒฝ์šฐ๊นŒ์ง€๋ฅผ ๊ฐ์•ˆํ•ด์•ผํ•œ๋‹ค๋ฉด popLast ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋Š”๊ฒŒ ์ข‹๊ฒ ์ฃ ?!

removeFirst์™€ popFirst๋„ ๊ฐ™์€ ๋งฅ๋ฝ์ด์—์š”!