๐Ÿ’ป Programming/Algorithm

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค Lv. 0] ์ง์ˆ˜๋Š” ์‹ซ์–ด์š”

Jiwon() 2023. 8. 3. 21:38

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ์•Œ๊ณ ๋ฆฌ์ฆ˜ ํ’€์ด
https://school.programmers.co.kr/learn/courses/30/lessons/120813
์‚ฌ์šฉ ์–ธ์–ด - ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ JavaScript JS

1. ์ง์ˆ˜๋Š” ์‹ซ์–ด์š”

1) โ“ ๋ฌธ์ œ ์„ค๋ช…

์ •์ˆ˜ n์ด ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์งˆ ๋•Œ, n ์ดํ•˜์˜ ํ™€์ˆ˜๊ฐ€ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ๋‹ด๊ธด ๋ฐฐ์—ด์„ returnํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด์ฃผ์„ธ์š”.

 

2) ๐Ÿšซ ์ œํ•œ ์‚ฌํ•ญ

  • 1 โ‰ค n โ‰ค 100

 

3) โ˜‘๏ธ ์ž…์ถœ๋ ฅ ์˜ˆ

n result
10 [1, 3, 5, 7, 9]
15 [1, 3, 5, 7, 9, 11, 13, 15]

 

 


2. ์‚ฌ์šฉํ•œ ๋ฉ”์„œ๋“œ: For๋ฌธ

For๋ฌธ์œผ๋กœ ๋ฐฐ์—ด์— ํ™€์ˆ˜๋ฅผ push

for๋ฌธ์€ ๊ด„ํ˜ธ๋กœ ๊ฐ์‹ธ๊ณ  ์„ธ๋ฏธ์ฝœ๋ก ์œผ๋กœ ๊ตฌ๋ถ„ํ•œ ์„ธ ๊ฐœ์˜ ์„ ํƒ์‹๊ณผ, ๋ฐ˜๋ณต์„ ์ˆ˜ํ–‰ํ•  ๋ฌธ(์ฃผ๋กœ ๋ธ”๋Ÿญ๋ฌธ)์œผ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค.

 

// ์—ฌ๋Ÿฌ ๋ฌธ ๋ฐ˜๋ณต ์‹คํ–‰ ์‹œ { statement }
for ([initialization]; [condition]; [final-expression]) {
	statement
 }
 
 // ์•„๋ฌด ๊ฒƒ๋„ ์‹คํ–‰ํ•˜์ง€ ์•Š์„ ์‹œ
 for ([initialization]; [condition]; [final-expression]);

initialization

  • ์‹ ๋˜๋Š” ๋ณ€์ˆ˜ ์„ ์–ธ, ์ฃผ๋กœ ์นด์šดํ„ฐ ๋ณ€์ˆ˜๋ฅผ ์ดˆ๊ธฐํ™”ํ•  ๋•Œ ์‚ฌ์šฉ

condition

  • ๋งค ๋ฐ˜๋ณต๋งˆ๋‹ค ํ‰๊ฐ€ํ•  ์‹
  • ํ‰๊ฐ€ ๊ฒฐ๊ณผ๊ฐ€ true์ด๋ฉด statement๋ฅผ ์‹คํ–‰, false์ด๋ฉด for๋ฌธ์˜ ๋‹ค์Œ ์‹์œผ๋กœ ๋„˜์–ด๊ฐ

final-expression

  • ๋งค ๋ฐ˜๋ณต ํ›„ ํ‰๊ฐ€ํ•  ์‹์œผ๋กœ, ๋‹ค์Œ condition ํ‰๊ฐ€ ์ด์ „์— ๋ฐœ์ƒ
  • ์ฃผ๋กœ ์นด์šดํ„ฐ ๋ณ€์ˆ˜๋ฅผ ์ฆ๊ฐํ•˜๊ฑฐ๋‚˜ ๋ณ€๊ฒฝํ•  ๋•Œ ์‚ฌ์šฉ

statement

  • ์กฐ๊ฑด์˜ ํ‰๊ฐ€ ๊ฒฐ๊ณผ๊ฐ€ ์ฐธ์ผ ๋•Œ ์‹คํ–‰ํ•˜๋Š” ๋ฌธ. ์—ฌ๋Ÿฌ ๋ฌธ์„ ๋ฐ˜๋ณต ์‹คํ–‰ํ•˜๋ ค๋ฉด ๋ธ”๋Ÿญ๋ฌธ( {} )์œผ๋กœ ๋ฌถ์–ด์ฃผ์–ด์•ผ ํ•จ.
  • ์•„๋ฌด๊ฒƒ๋„ ์‹คํ–‰ํ•˜์ง€ ์•Š์œผ๋ ค๋ฉด ๊ณต๋ฐฑ๋ฌธ ( ; ) ์‚ฌ์šฉ

 

 


3. ๋‹ต์•ˆ

1) ๋‚˜์˜ ํ’€์ด

const solution = (n) => {
    let answer = [];
    for (let i=0; i<=n; i++) {
        i%2 && answer.push(i)
    }
    return answer
}

 

2) ๋‹ค๋ฅธ ์‚ฌ๋žŒ์˜ ํ’€์ด

(1) for๋ฌธ์˜ ๋ณ€์ˆ˜ i์˜ ์ดˆ๊ธฐ๊ฐ’์„ 1๋กœ ์„ค์ • ํ›„, i์˜ ์ฆ๊ฐ์‹์„ i+=2๋กœ ์„ค์ •ํ•˜์—ฌ ํ™€์ˆ˜๋ฅผ push

function solution(n) {
    var answer = [];

    for (let i = 1; i<=n; i+=2) answer.push(i)

    return answer;
}
  • ์ „์ฒด์ ์ธ ๋ฐฉ๋ฒ•์€ ๋‚ด ํ’€์ด์™€ ๊ฐ™์ง€๋งŒ, for๋ฌธ ๋‚ด์—์„œ ์ง์ˆ˜์ž„์„ ๊ฒ€์ฆํ•  ํ•„์š” ์—†์ด let i=1, i+=2๋กœ ํ™€์ˆ˜๋งŒ ํ‘ธ์‹œํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ค์ •ํ•œ ์ ์ด ์ข‹์•˜๋‹ค.

 

(2) fill, map, filter์™€ index๋ฅผ ์‚ฌ์šฉํ•œ ๋ฐฉ๋ฒ•

function solution(n) {
    return Array(n).fill(1).map((v,i)=>v+i).filter(v=>v%2===1);
}
  • ๊ฐํƒ„ํ•˜๋ฉฐ ๋ดค๋˜ ํ’€์ด ๋ฐฉ๋ฒ•์ด์—ˆ๋‹ค.
  • ์ผ๋‹จ ๋ฐฐ์—ด์„ n๊ฐœ์˜ 1๋กœ ์ฑ„์šด ๋’ค, ์ธ๋ฑ์Šค๋ฅผ ํ™œ์šฉํ•˜์—ฌ map์œผ๋กœ ์ „์ฒด ๋ฐฐ์—ด์„ 1๋ถ€ํ„ฐ n๊นŒ์ง€ ์˜ค๋ฆ„์ฐจ์ˆœ ์ˆซ์ž ๋ฐฐ์—ด๋กœ ๋งŒ๋“  ๋’ค, filter๋กœ ํ™€์ˆ˜๋ฐฐ์—ด์„ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•
  • ์˜ˆ๋ฅผ ๋“ค์–ด, n=5์ด๋ฉด Array(n).fill(1)๋กœ [1, 1, 1, 1, 1] ๋ฐฐ์—ด์„ ๋งŒ๋“  ํ›„, map์—์„œ ๊ฐ ๋ฐฐ์—ด ์š”์†Œ์— ์ธ๋ฑ์Šค๋ฅผ ๋”ํ•ด์„œ [1, 2, 3, 4, 5]์˜ ๋ฐฐ์—ด๋กœ ๋งคํ•‘ํ•œ๋‹ค. ์ด๋ ‡๊ฒŒ ์™„์„ฑ๋œ ์ˆซ์ž ๋ฐฐ์—ด์„ filter๋กœ ํ™€์ˆ˜๋งŒ ํ•„ํ„ฐ๋งํ•˜์—ฌ ๋‹ต์•ˆ ์™„์„ฑ