โ ๋ฐฐ์ด.sort(์ฝ๋ฐฑํจ์(compare(a,b)))
โ ๋ฐฐ์ด์ ์ ๋์ฝ๋ ์์ผ๋ก ์ค๋ฆ์ฐจ์์ผ๋ก ๋ฐํํ๋ค.
โ ์ฝ๋ฐฑํจ์์์ a์ b๋ฅผ ์์ฑํ๋ฉด a์ b๋ฅผ ์ ๋์จ์ฝ๋๋ก ๋ฐ๊ฟ์ ๋น๊ตํ๋ค ๋ฐํํ๋ค.
โ ์ ๋ฐฐ์ด์ด ์ ๋ ฌ๋๋ค. ์๋ก์ด ๋ฐฐ์ด ๋ณต์ฌ๋ณธ์ผ๋ก ๋ฐํํ์ง ์๋๋ค.
์ฝ๋ฐฑํจ์๋ฅผ ๋๊ฒจ์ฃผ์ง ์์ผ๋ฉด ์ ๋์ฝ๋์์ผ๋ก ์ค๋ฆ์ฐจ์ ์ ๋ ฌํ๋ค.
const arr = ['A','D','B','C','Z','F']; arr.sort(); // ์ ๋์ฝ๋ ์์ผ๋ก ์ค๋ฆ์ฐจ์ ์ ๋ ฌ ์์ console.log(arr); // [ 'A', 'B', 'C', 'D', 'F', 'Z' ] ์ถ๋ ฅ
์ฝ๋ฐฑํจ์๋ฅผ ๋๊ฒจ์ฃผ์ง ์์ ๊ฒฝ์ฐ ์ซ์ํ์ ๋ฌธ์ ๊ฐ ์ผ์ด๋๋ค.
const arr = [11, 7, 3, 19, 24]; arr.sort(); // ์ ๋์ฝ๋ ์์ผ๋ก ์ค๋ฆํ์ ์ ๋ ฌ ์์ console.log(arr); // [ 11, 19, 24, 3, 7 ] ์ถ๋ ฅ
์ฒซ ๋ฒ์งธ ์๋ฆฌ๋ฅผ ๋จผ์ ๋น๊ต ํ๊ธฐ ๋๋ฌธ์ 1 1 2 3 7 ์์ผ๋ก ์ ๋ ฌ์ด ๋๋ค.
ํ์ง๋ง 3์ด ๊ฐ์ฅ ์์ ์ซ์์ด๋ฏ๋ก ์ฝ๋ฐฑํจ์๋ฅผ ๋ฃ์ด์ฃผ๋ฉด ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋๋ค.
const arr = [11, 7, 3, 19, 24]; arr.sort((a,b) => a-b); // ์ซ์ ์ค๋ฆ์ฐจ์ ์ ๋ ฌ console.log(arr); // [ 3, 7, 11, 19, 24 ] ์ถ๋ ฅ
์ฝ๋ฐฑํจ์์ด์ฉ ๋ฐฉ๋ฒ์ Mdn์ ์ฐธ๊ณ ํด์ ์์ฑํ๋ค.
์ฝ๋ฐฑํจ์๋ฅผ compare์ด๋ผ๊ณ ์ง์นญํ์ฌ ํํํ๋ค.
- compare(a, b)์์ ๋ฐํ๊ฐ์ด 0๋ณด๋ค ์์ผ๋ฉด a๋ฅผ ๋ฐํํ๋ค.
- compare(a, b)์์ ๋ฐํ๊ฐ์ด 0๋ณด๋ค ํฌ๋ฉด b๋ฅผ ๋ฐํํ๋ค,
- compare(a, b)์์ ๋ฐํ๊ฐ์ด ๊ฐ์ผ๋ฉด ์์๋ฅผ ๋ณ๊ฒฝํ์ง ์๋๋ค.
- ๋ชจ๋ a์ b์์ ๋ฐํ ์กฐ๊ฑด์ด ๋ง์กฑํ ๋ ๊น์ง ์์ชฝ์์ ํ์ธํ ์ ๋ ฌํ๋ค.
const arr = [11, 7, 3, 19, 24]; arr.sort((a,b) => b-a); // ์ซ์ ๋ด๋ฆผ์ฐจ์ ์ ๋ ฌ console.log(arr); // [ 24, 19, 11, 7, 3 ]
์์๋ก 0๋ฅผ ๋ฐํํ์ฌ ๋ฐฐ์ด์ด ๋ณํ๋์ง ํ์ธํด๋ณด์.
const arr = [11, 7, 3, 19, 24]; arr.sort((a,b) => 0); // 0์ ๋ฐํ console.log(arr); // [ 11, 7, 3, 19, 24 ] ์ถ๋ ฅ
์ด์ฒ๋ผ 0์ ๋ฐํํ๋ฉด ์๋ฐฐ์ด์ด ๋ฐํ๋๋ค.
๋์ด์์ผ๋ก ๋จผ์ ์ค๋ฆ์ฐจ์ ์ ๋ ฌ์ ํ๋ค ๋์ด๊ฐ ๊ฐ์ผ๋ฉด ์ํ๋ฒณ ์์๋๋ก ์ ๋ ฌํ๋ ์ฝ๋์ด๋ค.
const arr = [ { firstName: 'Park', lastName: 'Sara', age: 18 }, { firstName: 'Lee', lastName: 'Sin', age: 21 }, { firstName: 'Kim', lastName: 'Song', age: 24 }, { firstName: 'Son', lastName: 'San', age: 21 } ]; arr.sort((a, b) => { // 0์ผ๊ฒฝ์ฐ ๋์ด๊ฐ ๊ฐ์ if(a.age - b.age === 0) { // ๋ฌธ์์ด ์ฌ์ ์์ผ๋ก ๋ฐํ return a.firstName.localeCompare(b); } return a.age - b.age; }); console.log(arr);
๐ก Str1.localeCompare(Str2)๋ ์ฌ์ ์์๋๋ก Str1์ด ๋จผ์ ์๋๊ฒฝ์ฐ ์์๋ฅผ ๋ฐํ ๋ค์ ์๋ ๊ฒฝ์ฐ ์์๋ฐํ ๊ฐ์ ๊ฒฝ์ฐ 0์ ๋ฐํํ๋ค.
์ด์ฒ๋ผ ์ฌ๋ฌ ์กฐ๊ฑด์ด ์์๋ ์ ๋ ฌ์ด ๊ฐ๋ฅํ๋ค.
sort๋ฅผ ์ฌ์ฉํด์ ์ ๋ ฌ์ ํ๋ฉด ํธํ์ง๋ง ์ ๋ ฌ์๊ณ ๋ฆฌ์ฆ ๋ช๊ฐ์ง๋ ์ฝ๋๋ก ๊ตฌํํ ์ ์๋ ๊ฐ๋ฐ์๊ฐ ๋๊ณ ์ถ์ด์ ์ ๋ ฌ์ ๊ณต๋ถ ํ์๋ค. ๊ทธ์ค ๊ฐ์ฅ ๊ธฐ์ด์ ์ธ ์ ํ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ์ ์์๋ณธ๋ค.
function selectionSort(arr) { // 2์ค ํฌ๋ฌธ์ผ๋ก ๋ฐฐ์ดํ์ ์์ for (let i = 0; i < arr.length - 1; i++) { let index = i; for (let j = i + 1; j < arr.length; j++) { // ํ์ ํ๋ ๊ตฌ๊ฐ์ค ์ ์ผ ํฐ ๊ฐ์ index์ ๋์ if(arr[j] < arr[index]) index = j; } // ์งํ์ค์ธ ๋ฐฐ์ด๊ณผ ๋ฐฐ์ด๋ค์ ์ซ์๋ฅผ ๋ฐ๊ฟ์ค๋ค. const [acc, curr] = [arr[i], arr[index]]; arr[index] = acc; arr[i] = curr; } return arr; } console.log(selectionSort([5, 13, 11, 7, 23, 15])); // ์ค๋ฆ์ฐจ์ ์ ๋ ฌ
๋ฐฑ์ค ์ ๋ ฌ๋ฌธ์ (1431 : ์๋ฆฌ์ผ ๋ฒํธ)
function solution(arr) { let answer = ''; // ์ ๋ ฌ์์ arr.sort((a, b) => { // ๋ฌธ์์ด ๊ธธ์ด๊ฐ ์์์์๋๋ก ์ค๋ฆ์ฐจ์ ์ ๋ ฌ if(a.length < b.length) { return a.length - b.length; } // ๋ฌธ์์ด ๊ธธ์ด๊ฐ ๊ฐ๋ค๋ฉด ์์ธ์ฒ๋ฆฌ if(a.length === b.length) { // ๋ฌธ์์ด ์์ ์๋ ์ซ์๋ค์ ํฉ์ด ์์์๋๋ก ์ค๋ฆ์ฐจ์ ์ ๋ ฌ const A = a.replace(/[a-z]/gi, "0").split('').map((item) => +item).reduce((acc, curr) => acc + curr); const B = b.replace(/[a-z]/gi, "0").split('').map((item) => +item).reduce((acc, curr) => acc + curr); // ์ซ์๋ ๊ฐ์ผ๋ฉด ์ฌ์ ์์ผ๋ก ์ ๋ ฌ if(A === B) { return a.localeCompare(b); } return A - B; } }); // ์ ๋ต ์ ์ for(let item of arr) { answer += item + '\n'; } return answer.trim(); }