๐ Today Question
Selection Sort(์ ํ์ ๋ ฌ): ์ ํ์ ๋ ฌ์ ์ ๋ ฌ๋์ง ์์ ๋ฐ์ดํฐ ์ค ๊ฐ์ฅ ์์ ๋ฐ์ดํฐ๋ฅผ ์ ํํด์ ๋งจ ์์์๋ถํฐ ์์๋๋ก ์ ๋ ฌํด ๋๊ฐ๋ ์๊ณ ๋ฆฌ์ฆ์ ๋๋ค. ์ ํ ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ์ฌ ๋ฌธ์ ๋ฅผ ํ์ด๋ณด์ธ์.
โ๏ธ Problem Statement
nums๋ผ๋ ์ ๋ ฌ๋์ง ์์ ์ซ์ ๋ฐฐ์ด์ ์ฃผ๋ฉด, ์ค๋ฆ์ฐจ์(1,2,3..10) ์ผ๋ก ์ ๋ ฌ๋ ๋ฐฐ์ด์ returnํด์ฃผ์ธ์.
โ Check Point 1
: ์ ํ ์ ๋ ฌ์ ์ฒซ ๋ฒ์งธ ์๋ฃ๋ฅผ ๋ ๋ฒ์งธ ์๋ฃ๋ถํฐ ๋ง์ง๋ง ์๋ฃ๊น์ง ์ฐจ๋ก๋๋ก ๋น๊ตํ์ฌ ๊ฐ์ฅ ์์ ๊ฐ์ ์ฐพ์ ์ฒซ ๋ฒ์งธ์ ๋๊ณ , ๋ ๋ฒ์งธ ์๋ฃ๋ฅผ ์ธ ๋ฒ์งธ ์๋ฃ๋ถํฐ ๋ง์ง๋ง ์๋ฃ๊น์ง์ ์ฐจ๋ก๋๋ก ๋น๊ตํ์ฌ ๊ทธ ์ค ๊ฐ์ฅ ์์ ๊ฐ์ ์ฐพ์ ๋ ๋ฒ์งธ ์์น์ ๋๋ ๊ณผ์ ์ ๋ฐ๋ณตํ๋ฉฐ ์ ๋ ฌ์ ์ํํ๋ค.
โ Check Point 2
: 1ํ์ ์ ์ํํ๊ณ ๋๋ฉด ๊ฐ์ฅ ์์ ๊ฐ์ ์๋ฃ๊ฐ ๋งจ ์์ ์ค๊ฒ ๋๋ฏ๋ก ๊ทธ ๋ค์ ํ์ ์์๋ ๋ ๋ฒ์งธ ์๋ฃ๋ฅผ ๊ฐ์ง๊ณ ๋น๊ตํ๋ค. ๋ง์ฐฌ๊ฐ์ง๋ก nํ์ ์์๋ n๋ฒ์งธ ์๋ฃ๋ฅผ ์ ๋ ฌํ๋ค.
โ Check Point 3
: ์ฅ์ -์๋ฃ ์ด๋ ํ์๊ฐ ๋ฏธ๋ฆฌ ๊ฒฐ์ ๋๋ค.
: ๋จ์ -๊ฐ์ ๊ฐ์ด ์๋ ๊ฒฝ์ฐ ์๋์ ์ธ ์์น๊ฐ ๋ณ๊ฒฝ๋ ์ ์๊ธฐ ๋๋ฌธ์ ์์ ์ฑ์ด ๋ง์กฑ๋์ง ์๋๋ค.
๐
const selectionSort = (nums) => {
for (let i = 0; i<nums.length; i ++) {
let min = i;
for (let j = i+1; j<nums.length; j++){
if (nums[min]>nums[j]){
min = j;
}
}
if (min!==i){
let change = nums[min];
nums[min] = nums [i];
nums[i] = change;
}
}
return nums;
}
โ ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ์ ๊ณต๋ถํด์ผํ๋ ์ด์ ๋ ํจ์จ์ ์ธ ํ์์ ์ํด์์ด๋ค. ํ์ํด์ผํ๋ ๋ฐ์ดํฐ๊ฐ ์ ๋ ฌ๋์ด ์์ง ์๋ค๋ฉด ์กฐํ, ์ฝ์ , ์ญ์ ๋ฑ์ ์๋ฃ์ ๋ํ ์ ๊ทผ ์ฉ์ด์ฑ์ด ๋จ์ด์ง๋ค. ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ์ ๋ฌด์ํ๋ฉฐ ์ด๋ ์๊ฐ ๋ณต์ก๋, ๊ณต๊ฐ ๋ณต์ก๋๋ฅผ ํด๊ฒฐํ๋๋ฐ ๋ชฉํ๋ฅผ ๋๋ค.