8.5
์ฝํ ์ ๋ฌธ ๋ฌธ์ - ์ง์๋ ์ซ์ด์
๊ฐ๋จํ๊ณ ์ฌ์ด ๋ฌธ์ .
โ ๋ฌธ์
์ ์ n์ด ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง ๋, n ์ดํ์ ํ์๊ฐ ์ค๋ฆ์ฐจ์์ผ๋ก ๋ด๊ธด ๋ฐฐ์ด์ returnํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
๐ช ๋ด ์ฝ๋
function solution(n) {
let answerArr = [];
for (let i = 1; i <= n; i+=2) {
answerArr.push(i);
}
return answerArr;
}
array ๋ฅผ ์์ฑํ ํ for ๋ฐ๋ณต๋ฌธ์ ํตํด 1๋ถํฐ n๊น์ง, 2์ฉ ์ฆ๊ฐํ๋ ์ (ํ์) ๋ฅผ ํ๋์ฉ ๋ฐฐ์ด์ ๋ฃ์ด์ค๋ค.
์ด ๋ฐฉ๋ฒ์ด ๊ฐ์ฅ ํํ๊ณ ๊ฐ๋ ์ฑ ์ข์(?) ๋ฐฉ๋ฒ์ธ ๊ฒ ๊ฐ๋ค.
๋ฐฐ์ด ์์ฑ ํ for ๋ฐ๋ณต๋ฌธ๊ณผ ํจ๊ป array.push( ) ๋ฐฐ์ด ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ฉด ๋๋ค.
๐งธ ๋ค๋ฅธ ํ์ด
1) for ๋ฌธ ์ if๋ฌธ ์ฌ์ฉ
function solution(n) {
const answer = []
for(let i = 1; i <= n; i++){
if(i % 2 !== 0){ // ํ์์ธ ๊ฒฝ์ฐ ์๋์ฒ๋ผ ๋ฐฐ์ด์ ๋ด๊ธฐ
answer.push(i)
}
}
return answer;
}
๋ด ์ฝ๋์ ์ ์ฌํ์ง๋ง, for๋ฌธ์์ 1์ฉ ์ฆ๊ฐํ๋ ์๋ฅผ ๋๋ฆฌ๋ฉด์, for๋ฌธ ์ if๋ฌธ์ผ๋ก ํ์ ์กฐ๊ฑด์ ๋ถ์ฌ์คฌ๋ค.
๊ทผ๋ฐ ๊ตณ์ด ์ฝ๋๋ฅผ ๊ธธ๊ฒ ๋์ผ ํ์๋ ์์ ๋ฏํด ์ด ๋ฐฉ๋ฒ๋ณด๋ค๋ ๋ด ๋ฐฉ๋ฒ๋๋ก ํ๋ฉด ๋ ๊ฒ ๊ฐ๋ค.
(ํ์ ์กฐ๊ฑด์ด ์๋๋ผ ๋ ๋ณต์กํ ์กฐ๊ฑด์ด๋ผ๋ฉด if ๋ฌธ์ด ํ์ํ๊ฒ ์ง๋ง)
2) Array.from ๊ณผ filter ๋ฐฐ์ด ๋ฉ์๋ ์ฌ์ฉ
const solution = (n) =>
Array
.from({ length: n }, (_, i) => i + 1) // n๊ฐ ์์, 1์ฉ ์ฆ๊ฐํ๋ ๋ฐฐ์ด ์์ฑ
.filter(i => i % 2 !== 0) // ํ์๋ง ๊ฑธ๋ฌ๋ด๊ธฐ
์์ง JS ๋ฌธ๋ฒ์์ ๋ชจ๋ฅด๋ ๊ฒ ๋ง์ ๋ ใ ใ
์ด ๋ฐฉ๋ฒ๋ ๊ทธ๋ ๋ค. (filter ๋ฉ์๋๋ ์ฌ์ฉํ์๊ณ Array.from ์ ๋ฏ์ค๋ค..)
Array.from ๊ณผ Array.filter ๋ฉ์๋๋ฅผ ์ฌ์ฉํ ํ์ด์ธ๋ฐ, (ES6)
i )
Array.from ์ ๋ฌธ์์ด ๋ฑ ์ ์ฌ ๋ฐฐ์ด(Array-like) ๊ฐ์ฒด๋ ์ดํฐ๋ฌ๋ธํ ๊ฐ์ฒด๋ฅผ ๋ฐฐ์ด๋ก ๋ง๋ค์ด์ฃผ๋ ๋ฉ์๋,
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/from
(๊ทธ๋์ ๋ฌธ์์ด์ ๋ฃ์ผ๋ฉด ๋ฌธ์ ํ๋ํ๋๋ฅผ ์์๋ก ์ชผ๊ฐ ๋ฐฐ์ด์ ์์ฑ)
ii )
Array.filter ์ ๋ฐฐ์ด์ ๊ฐ ์์๋ฅผ ์ํํ๋ฉฐ ์ฃผ์ด์ง callbackํจ์๋ฅผ ์คํ์์ผ ์กฐ๊ฑด์ ๋ง๋ ์์๋ง์ ๊ฐ๋ ๋ฐฐ์ด์ ๋ฐํํ๋ ๋ฉ์๋.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter
-
Array.from ์ ํตํด for ๋ฐ๋ณต๋ฌธ์ผ๋ก ํ๋ํ๋ ๋ฐฐ์ด์ ์์๋ฅผ push ํ์ง์๊ณ ๋, ๋ฐฐ์ด์ ์์ฑํ ์ ์๋ค.
์ ๋ฌธ๋ฒ์ ๋ณด๋ฉด, n ๊ฐ์ ๊ธธ์ด ๋ฐฐ์ด์ 1์ฉ ์ฆ๊ฐํ๋ ์์๋ค์ ๋ฐฐ์ด์ ์์ฑ.
๊ทธ ๋ค์ Array.filter ์ ํตํด ๋ฐ๋ก ์์ ์ค ํ์๋ง ๊ณจ๋ผ ์ ํํด์ฃผ๋ฉด ๋๋ค.