๐Ÿชด JavaScript & TypeScript/๐Ÿงฉ Algorithm

[JS] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค_์ž…๋ฌธ : ์ง์ˆ˜๋Š” ์‹ซ์–ด์š” (๊ฐ„๋‹จ for๋ฌธ, Array.from ๋“ฑ ๋ฐฐ์—ด ๋ฉ”์„œ๋“œ)

๋ จ๋”” 2024. 8. 5. 23:14
SMALL

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

 

Array.from() - JavaScript | MDN

Array.from() ์ •์  ๋ฉ”์„œ๋“œ๋Š” ์ˆœํšŒ ๊ฐ€๋Šฅ ๋˜๋Š” ์œ ์‚ฌ ๋ฐฐ์—ด ๊ฐ์ฒด์—์„œ ์–•๊ฒŒ ๋ณต์‚ฌ๋œ ์ƒˆ๋กœ์šด Array ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

developer.mozilla.org

(๊ทธ๋ž˜์„œ ๋ฌธ์ž์—ด์„ ๋„ฃ์œผ๋ฉด ๋ฌธ์ž ํ•˜๋‚˜ํ•˜๋‚˜๋ฅผ ์›์†Œ๋กœ ์ชผ๊ฐœ ๋ฐฐ์—ด์„ ์ƒ์„ฑ)

ii )

Array.filter ์€ ๋ฐฐ์—ด์˜ ๊ฐ ์š”์†Œ๋ฅผ ์ˆœํšŒํ•˜๋ฉฐ ์ฃผ์–ด์ง„ callbackํ•จ์ˆ˜๋ฅผ ์‹คํ–‰์‹œ์ผœ ์กฐ๊ฑด์— ๋งž๋Š” ์š”์†Œ๋งŒ์„ ๊ฐ–๋Š” ๋ฐฐ์—ด์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋ฉ”์„œ๋“œ.

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter

 

Array.prototype.filter() - JavaScript | MDN

The filter() method of Array instances creates a shallow copy of a portion of a given array, filtered down to just the elements from the given array that pass the test implemented by the provided function.

developer.mozilla.org

 

 

-

Array.from ์„ ํ†ตํ•ด for ๋ฐ˜๋ณต๋ฌธ์œผ๋กœ ํ•˜๋‚˜ํ•˜๋‚˜ ๋ฐฐ์—ด์— ์›์†Œ๋ฅผ push ํ•˜์ง€์•Š๊ณ ๋„, ๋ฐฐ์—ด์„ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.

์œ„ ๋ฌธ๋ฒ•์„ ๋ณด๋ฉด, n ๊ฐœ์˜ ๊ธธ์ด ๋ฐฐ์—ด์— 1์”ฉ ์ฆ๊ฐ€ํ•˜๋Š” ์›์†Œ๋“ค์˜ ๋ฐฐ์—ด์„ ์ƒ์„ฑ.

๊ทธ ๋‹ค์Œ Array.filter ์„ ํ†ตํ•ด ๋ฐ”๋กœ ์›์†Œ ์ค‘ ํ™€์ˆ˜๋งŒ ๊ณจ๋ผ ์„ ํƒํ•ด์ฃผ๋ฉด ๋œ๋‹ค. 

SMALL