34. ๋ฌธ์์ด ๋ด ๋ง์๋๋ก ์ ๋ ฌํ๊ธฐ
๐ ๋ฌธ์
๐ ๋ต
function solution(strings, n) {
strings.sort(function(a,b){
let first = a[n];
let second = b[n];
if(first == second){
return (a>b) - (a<b)
}
else{
return (first>second) - (first<second)
}
})
return strings;
}
๐ sort์ ์์ธํ ์ค๋ช ( ์ถ์ฒ : https://opentutorials.org/course/50/109)
๊ตฌ์ฒด์ ์ธ ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ์ ํ๋ก๊ทธ๋๋ฐ ์ด์ฌ์๊ฐ ์ดํดํ๊ธฐ ์ด๋ ค์์
์ด๊ณ ์๋๊ป์ ์ผ๋ถ๋ฌ ์ค๋ช
์ ์คํตํ์ ๊ฒ ๊ฐ์๋ฐ...
๋ฐ์ ์๋ชป๋ ์ ๋ณด๊ฐ ์์ด ์ ๊ฐ ๊ตณ์ด ์ค๋ช
์ ๋ณดํญ๋๋ค.
์ฐ์ [20, 10, 9,8,7,6,5,4,3,2,1]์ ๋ฐฐ์ด์์ a-b๋ผ๋ ์ฐ์ฐ์ ๋ชจ๋ ํ ๋ค์
๊ทธ ๊ฒฐ๊ณผ๊ฐ์ผ๋ก ์ ๋ ฌํ๋ ๊ฒ์ด ๊ฒฐ์ฝ ์๋๋๋ค.
๋ญํ๋ฌ ๊ตณ์ด ๋บ์
์ ํ๊ณ ๊ทธ ๊ฐ์ผ๋ก ๋ ์ ๋ ฌํ๊ฒ ์ต๋๊น?
์๋ฐ์คํฌ๋ฆฝํธ์ ์ ํํ ์๊ณ ๋ฆฌ์ฆ์ ์๋์ง๋ง
์ฝ๊ฒ ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ์ ์ค๋ช
ํ๋ฉด ์ด๋ ์ต๋๋ค.
(a,b) ํ์์ผ๋ก ์ง์ ํ ๋ ์ธ์๋ฅผ ์ฐจ๋ก๋ก ๋น๊ตํฉ๋๋ค.
์ฐ์ ๋ฐฐ์ด numbers[0]๊ณผ numbers[1] ์ฆ, 20๊ณผ 10์ ๋น๊ตํด ๋ณผ๊น์?
20-10 = 10
๊ฒฐ๊ณผ๊ฐ์ด 10 ์ฆ, ์์์
๋๋ค.
sortํจ์์ sortNumber(a,b)์ return ๊ฐ์ผ๋ก ์์ 10์ ์ ๋ฌํฉ๋๋ค.
๊ทธ๋ผ sortํจ์๊ฐ ์์๊ฐ์ ์ ๋ฌ๋ฐ๊ณ ๋ฐฐ์ด์ ์์๋ฅผ ๋ฐ๊พธ์ด ๋ฒ๋ฆฝ๋๋ค.
(์ ํํ๊ฒ ๋งํ๋ฉด ๋ ๋ฐฐ์ด ์์ ๋ ๊ฐ์ ๊ต์ฒด)
๊ทธ๋ผ ๋ฐฐ์ด์ด [10, 20, 9,8,7,6,5,4,3,2,1] ์ด๋ ๊ฒ ๋ฐ๋๋๋ค.
๊ทธ ๋ค์ numbers[0]๊ณผ numbers[2] ์ฆ 10๊ณผ 9๋ฅผ ๋น๊ตํฉ๋๋ค. 10 - 9 = 1 >0, ์์์
๋๋ค.
๊ฒฐ๊ณผ๊ฐ์ด ์์์ด๋ฏ๋ก ๋ 10๊ณผ 9์ ์์๋ฅผ ๋ฐ๊ฟ๋๋ค.
์ด๋ฐ ์์ผ๋ก ๊ณ์ ๋ ์ธ์๋ฅผ ๋น๊ตํด์ ๊ฒฐ๊ณผ๊ฐ์ด ์์๊ฐ ๋์ค๋ฉด ์์๋ฅผ ๋ฐ๊พธ๊ณ ,
์์๊ฐ ๋์ค๋ฉด ์์๋ฅผ ๊ทธ๋๋ก ์ ์งํ๋ ๊ฒ๋๋ค.
๋ฐฐ์ด์ด ๋ฐ๋์ด๊ฐ๋ ์์๋ฅผ ๋ณด๋ฉด ์ดํดํ๊ธฐ ์ฝ์ต๋๋ค.
[(20), (10), 9,8,7,6,5,4,3,2,1] 20-10 = 10, ์ฆ ์์์ด๋ฏ๋ก ์์๋ฐ๋! ()๋ ๋น๊ต๋๋ ์ธ์๊ฐ.
[(10), 20, (9),8,7,6,5,4,3,2,1] 10 - 9 = 1 ๋ ์์, ์์ ๋ฐ๋.
[(9), 20, 10, (8),7,6,5,4,3,2,1] ๋ฐ๋ณต...
[(8), 20, 10, 9,(7)...]
...
[(2). 20, 10...3, (1)]
[(1), 20, 10...]
๊ทธ๋ผ ๋ฐฐ์ด ๋ด์์ ๊ฐ์ฅ ์์ ๊ฐ 1์ด ์ฐพ์์ง๊ฒ ์ฃ .
[1, 20, 10, 9,8,7,6,5,4,3,2]
1์ ์์๋ ๋ฐ๋์ง ์์ต๋๋ค. 1-2 = -1
์ฆ ๊ฒฐ๊ณผ๊ฐ์ด ์์์ด๊ธฐ ๋๋ฌธ์ด์ฃ .
๊ทธ ๋ค์์ ๋๋ฒ์งธ ๋ฐฐ์ด ์ฐจ๋ก์
๋๋ค.
20 - 10 = 10 > 0 ์ด๋ฏ๋ก ์์๋ฅผ ๋ ๋ฐ๊ฟ๋๋ค.
[1, (20), (10), 9,8,7,6,5,4,3,2]
[1, (10), 20, (9), 8...]
[1, (9), 20, 10, (8)...]
์ด๋ฐ ์์ผ๋ก ๋ฐ๋ณตํ๋ค ๋ณด๋ฉด ๋๋ฒ์งธ๋ก ์์ ๊ฐ 2๋ ์ฐพ๊ฒ ๋ฉ๋๋ค.
....
[1, 2, 20, 10, 9,8,7,6,5,4,3]
๊ทธ๋ผ ๋ค์์ ์ธ๋ฒ์งธ...
์ด๋ ๊ฒ ์ง๋ฃจํ๊ฒ ๋ฐ๋ณตํ๋ฉด ๊ฒฐ๊ตญ ์ ๋ ฌ์ด ๋ฉ๋๋ค.
๋ฌผ๋ก ์ค์ ์๋ฐ์คํฌ๋ฆฝํธ์์๋ ๋น๊ตํ๋ ์์๊ฐ ๋ค๋ฆ
๋๋ค.
๋ค๋ฅธ ์๊ณ ๋ฆฌ์ฆ์ ์ฐ๊ธฐ ๋๋ฌธ์ด์ฃ .
์ด๋ ๊ฒ ์ฐจ๋ก์ฐจ๋ก ๋น๊ตํด ๋๊ฐ๋ฉด ์ธ๊ฐ์ด ์ดํดํ๊ธฐ๋ ์ฝ์ง๋ง
์ฐ์ฐ๋์ด ๊ธฐํ๊ธ์์ ์ผ๋ก ๋์ด๋๊ธฐ ๋๋ฌธ์ ๋ค๋ฅธ ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ์ ์ฐ๋ ๊ฒ์ด์ฃ .
์ค์ ๋ก๋
[20, 10, 9,8,7,6,5,4,3,2,1]
๋ฐฐ์ด์ ์์ชฝ ๋๋ถํฐ ๋น๊ตํ๊ณ (20, 1),
๊ทธ ๋ค์ ๋ฐฐ์ด์ ๊ฐ์ด๋ฐ ๊ฐ์ ์ฐจ๋ก๋ก ๋น๊ตํด ๋๊ฐ๋๋ค. (1,6)
๋๋ฒ๊น
ํด ๋ณด์๋ฉด ์ฝ๊ฒ ์์ค ์ ์์ ๊ฒ๋๋ค