์ฒซ ๋ฒ์งธ ๋ฌธ์ .
๋งค๊ฐ๋ณ์๋ก ์ ์๊ฐ ๋ด๊ธด ๋ฐฐ์ด์ด ์ ๋ฌ ๋๋ฉฐ, ๋ฐฐ์ด ์์ ์ง์, ํ์๊ฐ ๋ช ๊ฐ ์๋์ง ํ๋ณ ํด๋ด๋ ์ฝ๋๋ฅผ ์์ฑํ๋ ๊ฒ์ด ๋ฌธ์ ์๋ค.
๊ฐ์ฅ ๋จผ์ ์ด๋ป๊ฒ ์ถ๋ ฅ ๋ฐฐ์ด์ ์ฒซ๋ฒ ์งธ ์ธ๋ฑ์ค์๋ ์ง์ ๊ฐ์ ๋ฃ๊ณ , ๋๋ฒ ์งธ ์ธ๋ฑ์ค์๋ ํ์ ๊ฐ์ ๋ฃ์์ง๊ฐ ๊ณ ๋ฏผ์ด์๋ค.
1. ์ง์, ํ์๋ฅผ ๋๋ ์ค even, odd์ ๋น ๋ฐฐ์ด์ ๋ง๋ค๊ณ
2. ์ง์๋ ์ง์๋๋ก even์ push ํ๊ณ , ํ์๋ ํ์๋๋ก odd์ push ํ๋ค.
3. ๊ทธ๋ ๊ฒ ์ถ๋ ฅ์ even = [2,4], odd[1,3,5]๋ก ๋๋์ด ๋ฐฐ์ด์ ๋ด๋ ๊ฒ ๊น์ง ์ฑ๊ณต
4. concat ๋ฉ์๋๋ฅผ ์ด์ฉํ์ฌ ๋์ ํฉ์น๋ ๋ ๊ฐ์ ๋ฐฐ์ด ๊ทธ๋๋ก ํฉ์ณ์ ธ ๋ฐํ๋์๊ณ
5. ๊ฐ๊ฐ์ ๊ธธ์ด๋ง ํ์ํจ์ ์ธ์งํ๊ณ .length๋ฅผ ๋ถ์ฌ result๋ฅผ ์์ฑํ๋ค.
๋ค๋ฅธ ์ฌ๋์ ํ์ด๋ฅผ ๋ณด๊ณ ๊ฐ์ฅ ํฌ๊ฒ ๊นจ๋ฌ์๋ ์ ์ ์์ง๊น์ง ์๋ฐ์คํฌ๋ฆฝํธ ํน์ฑ์ ์ดํด๋๊ฐ ๋ถ์กฑํ๋ ๊ฒ ๊ฐ์๋ค.
์๋ฐ์คํฌ๋ฆฝํธ๋ ํน์ฑ ์ ์์ ํ์ ๊ณผ ๊ฐ์ฒด ํ์ ์ผ๋ก ๋ฐ์ดํฐ ๊ตฌ์กฐ๊ฐ ๋๋๋ฉฐ
์์ ํ์ ์ผ๋ก๋ "๋ฌธ์(string), ์ซ์(number), bigint, ๋ถ๋ฆฐ(boolean), ์ฌ๋ณผ(symbol), null, undefinedํ์ผ๋ก ์ด ์ผ๊ณฑ๊ฐ์ง์ด๋ฉฐ",
"์์ ํ์ ์ ์ ์ธ ํ ๋ชจ๋ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ ๊ฐ์ฒด ํ์ ์ผ๋ก { key : value } ํํ์ ๊ตฌ์กฐ๋ฅผ ๊ฐ๊ณ ์๋ค."
๋ํด, ์์ ํ์ ์ ๋ฐ์ดํฐ ๊ฐ๋ ๊ฐ์ฒด ์ฒ๋ผ ์ฌ์ฉํ ์ ์๋๋ฐ "์ด๋ฅผ ์์๊ฐ์ด ๋ฉ์๋๋ ํ๋กํผํฐ์ ์ ๊ทผํ๋ ค ํ๋ฉด ์ถ๊ฐ ๊ธฐ๋ฅ์ ์ ๊ณตํด์ฃผ๋ ํน์ํ ๊ฐ์ฒด, '์์ ๋ํผ ๊ฐ์ฒด(object wrapper)'๋ฅผ ๋ง๋ค์ด ์ค๋๋ค. ์ด ๊ฐ์ฒด๋ ๊ณง ์ญ์ ๋ฉ๋๋ค." - ์์ ๊ฐ๊ณผ ๊ฐ์ฒด -
์ ๋ฌธ์ ์์ ํด๊ฒฐํ "๋ฐฐ์ด" ์ญ์ ๊ฐ์ฒด์ ํ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ก ๋ด๊ฐ ์ดํดํ ๋ฐฐ์ด์ ํํ๋ {[index]: value} ํํ์ ๊ฐ์ฒด ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๊ณ ์์ง ์๋ ์๊ฐํ๋ค.
๋์ ๋ฌธ์ ํด๊ฒฐ ์ค๋ฅ๋ ๋น ๋ฐฐ์ด์ ์๋ก์ด ๋ฐฐ์ด๊ฐ์ฒด๋ฅผ ์์ฑํ๋ ค ํ๋ค๋ ๊ฒ. ๊ธฐ์กด์ ๋ฐฐ์ด์ด ๊ฐ์ง value์ ๊ฐ์ ์ฌํ ๋น ํ ์๊ฐ์ ๋ชป ํ๋ ๊ฒ์ด์๋ค!
๋ค๋ฅธ ์ฌ๋๋ค์ ํด๊ฒฐ ๋ฒ์๋ "let answer = [0, 0]"์ผ๋ก ์ง์ ํด๋๊ณ ํด๋น key๋ฅผ ๊ฐ์ง ์ธ๋ฑ์ค๋ฅผ ๋ถ๋ฌ์ value์ ๊ฐ์ ์ฌํ ๋น ํ๊ฑฐ๋ ์นด์ดํธ๋ฅผ ์ฌ๋ฆฌ๋ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ๋ ๊ฒ์ด ์๋์์๊น.
์ง๊ธ ๋ฌธ์ ์์ ๊นจ๋ฌ์ ์ ์
๋ ๋ฒ์งธ ๋ฌธ์ .
๋งค๊ฐ๋ณ์๋ก ์ ์๊ฐ ๋ด๊ธด ๋ฐฐ์ด์ด ์ ๋ฌ ๋๋ฉฐ, ๋ฐฐ์ด์ ๋ ์์ ์ค์์ ๊ณฑํ ๊ฐ์ ์ต๋ ๊ฐ์ return ํ๋ ๋ฌธ์ ์๋ค.
์ฐํ
์ฝ ํ๋ฆฌ์ฝ์ค์์ ํ์๋ ๋ฌธ์ ๊ฐ ๊ธฐ์ต๋, ๊ธฐ์ต๋๋ ํจ์๋ฅผ ์ ์ฉํ์ฌ ๋ฌธ์ ๋ฅผ ํ์๋๋ฐ
๋ฐ๋ณต๋ฌธ ์กฐ๊ฑด ์ ์ฉ ๋จ๊ณ์์ ์์ ์ธ์ ์ ์ฉ๋๋ index๊ฐ ์๊ฒจ NaN์ด ํฌํจ๋ ๋ฐฐ์ด์ ๋ฐํํ๋ ๊ฒ์ด์๋ค.
๋ฌธ์ ๊ฐ ๋ฌด์ผ๊น ๊ณ ๋ฏผํ๋ค i์ ์ด๊ธฐ ๊ฐ์ 1๋ก ์ค์ ํ ๋ค ๋ฐฐ์ด์ ํฌ์ธํฐ๋ฅผ ์ค์ ํ์ฌ ์, ๋ค์ ์์๋ฅผ ๊ณฑํด๋ด๋ ๋ฐฐ์ด์ ๊ตฌํ ์๋ฃํ๋ค.
์ฐธ๊ณ ํ ๊นจ๋ซ๊ฒ ๋ ์ ์ ๋ฐฐ์ด์ ์ฐจ์์ผ๋ก ์ ๋ ฌํ์ฌ ์๋ก์ด ๋ฐฐ์ด์ ๋ฐํํ๋ sort() ๋ฉ์๋๋ฅผ ์๊ฒ ๋๋ค.
๊ทธ๋ฌ๋ ๋ฉ์๋๋ฅผ ์ฐพ์๋ณธ ๊ฒฐ๊ณผ๋ ์ด๋ป๊ฒ ์๋ฆฌ๊ฐ ์ด๋ค์ง๋ ์ง ์ดํด๊ฐ ๋ถ์กฑํ๋ค.
sort() ๋ฉ์๋์ ์๋ฆฌ๋ ๋ฐฐ์ด์ ์์๋ฅผ ์ ์ ํ ์์น์ ์ ๋ ฌํ ํ ๊ทธ ๋ฐฐ์ด์ ๋ฐํํฉ๋๋ค.
๊ธฐ๋ณธ ์ ๋ ฌ ์์๋ ๋ฌธ์์ด์ ์ ๋์ฝ๋ ์ฝ๋ ํฌ์ธํธ๋ฅผ ๋ฐ๋ฆ ๋๋ค.
sort() ๋ฉ์๋ ๋ด๋ถ ์ ์ผ๋ก ์ ์ฉ๋๋ ์๋ฆฌ๋ "arr.sort([compareFunction])" ์ด๋ฌํ๋ฉฐ ๊ดํธ ์์ ๋น๊ต ๊ฐ๋ฅํ ์ธ์ ๊ฐ์ด ์ ๋ฌ ๋์ด์ผ ์ฐจ์์ผ๋ก ์ซ์๋ฅผ ์ ๋ ฌํ ์ ์๋ค.
MDN์ ๊ณต์๋ฌธ์์ ๋ฐ๋ฅด๋ฉด,, -Array.prototype.sort()-
์ธ์๋ก ์ ๋ฌ๋๋ a์ b๊ฐ ๋น๊ต๋๋ ๋ ์์๋ผ๋ฉด,
* compareFunction(a, b)์ด 0๋ณด๋ค ์์ ๊ฒฝ์ฐ a๋ฅผ b๋ณด๋ค ๋ฎ์ ์์ธ์ผ๋ก ์ ๋ ฌํฉ๋๋ค. ์ฆ, a๊ฐ ๋จผ์ ์ต๋๋ค. a-b < 0 => a,b
* compareFunction(a, b)์ด 0์ ๋ฐํํ๋ฉด a์ b๋ฅผ ์๋ก์ ๋ํด ๋ณ๊ฒฝํ์ง ์๊ณ ๋ชจ๋ ๋ค๋ฅธ ์์์ ๋ํด ์ ๋ ฌํฉ๋๋ค. a-b = 0 => a,b
* compareFunction(a, b)์ด 0๋ณด๋ค ํฐ ๊ฒฝ์ฐ, b๋ฅผ a๋ณด๋ค ๋ฎ์ ์ธ๋ฑ์ค๋ก ์ํธํฉ๋๋ค.
a-b > 0 => b,a
์ฝ๊ฒ ๋งํด,,
sort() ๋ฉ์๋๋ฅผ ์ดํดํ๊ธฐ ์ํด ์ฐพ์๋ณธ ์ฌ์ดํธ ์ค ๊ฐ์ฅ ์ดํดํ๊ธฐ ์ฝ๊ฒ ์ค๋ช ํด์ค ์ฌ์ดํธ๊ฐ ์์ด์ ์ถ์ฒ๋ฅผ ๋จ๊น๋๋ค! -Array.prototype.sort()๊ฐ ๋์ํ๋ ๋ฐฉ์-
๋ชฉํ์น ๋งํผ์ ๋ฌธ์ ๋ฅผ ํ์ง ๋ชป ํ๋๋ผ๋ ๋ฌธ์ ๋ฅผ ํผ ๊ฒ์์ ๊นจ๋ฌ์ ๊ฒ์ด ์๊ฑฐ๋ ๊ณ ๋ฏผํ ๊ฒ ์ค์์ ์ ์ฉ ํด๋ณด๊ณ ์๊ฒ๋ ๊ฒ ๋ฑ ์ฐ๊ตฌํ์ฌ ์๊ฒ ๋ ๊ฒ๋ค์ ๋ฉ๋ชจํ๋ ์ต๊ด์ ๊ธฐ๋ฅด์!
๊ธฐ๋กํ์ง ๋ชป ํ๋ฉด ์์ํ ์ํ์ง๊ฒ ๋๋ ๊ฒ!