[ JavaScript ์•Œ๊ณ ๋ฆฌ์ฆ˜ (ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค)] ์•ฝ์ˆ˜์˜ ๊ฐœ์ˆ˜์™€ ๋ง์…ˆ*

2023. 9. 5. 14:46ใ†5. Algorithm

  • ์•ฝ์ˆ˜์˜ ๊ฐœ์ˆ˜์™€ ๋ง์…ˆ

 

1. ๋ฌธ์ œ์„ค๋ช…

๋‘ ์ •์ˆ˜ left์™€ right๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์ง‘๋‹ˆ๋‹ค. left๋ถ€ํ„ฐ right๊นŒ์ง€์˜ ๋ชจ๋“  ์ˆ˜๋“ค ์ค‘์—์„œ, ์•ฝ์ˆ˜์˜ ๊ฐœ์ˆ˜๊ฐ€ ์ง์ˆ˜์ธ ์ˆ˜๋Š” ๋”ํ•˜๊ณ , ์•ฝ์ˆ˜์˜ ๊ฐœ์ˆ˜๊ฐ€ ํ™€์ˆ˜์ธ ์ˆ˜๋Š” ๋บ€ ์ˆ˜๋ฅผ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด์ฃผ์„ธ์š”

 

2. ์ž…์ถœ๋ ฅ ์˜ˆ

3. ์ œํ•œ์‚ฌํ•ญ

  • 1 ≤ left ≤ right ≤ 1,000

 

4. ์ž…์ถœ๋ ฅ ์˜ˆ ์„ค๋ช…

์ž…์ถœ๋ ฅ ์˜ˆ #1

  • ๋‹ค์Œ ํ‘œ๋Š” 13๋ถ€ํ„ฐ 17๊นŒ์ง€์˜ ์ˆ˜๋“ค์˜ ์•ฝ์ˆ˜๋ฅผ ๋ชจ๋‘ ๋‚˜ํƒ€๋‚ธ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
  • ๋”ฐ๋ผ์„œ, 13 + 14 + 15 - 16 + 17 = 43์„ return ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ž…์ถœ๋ ฅ ์˜ˆ #2

  • ๋‹ค์Œ ํ‘œ๋Š” 24๋ถ€ํ„ฐ 27๊นŒ์ง€์˜ ์ˆ˜๋“ค์˜ ์•ฝ์ˆ˜๋ฅผ ๋ชจ๋‘ ๋‚˜ํƒ€๋‚ธ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
  • ๋”ฐ๋ผ์„œ, 24 - 25 + 26 + 27 = 52๋ฅผ return ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

[ ๋‚ด๊ฐ€ํ•œ ๋ฌธ์ œ ํ’€์ด ]

function solution(left, right) {
    var answer = 0;
    for(let i = left; i <= right; i++){ 
    // left ๋ถ€ํ„ฐ right ๊นŒ์ง€์˜ ์•ฝ์ˆ˜์˜ ๊ฐœ์ˆ˜๋ฅผ ๊ตฌํ•œ๋‹ค.
          let count = 0;
           
    for(let j = 1; j <= Math.sqrt(i); j++){
    // j๋Š” 1๋ถ€ํ„ฐ i๊นŒ์ง€์˜ ์ œ๊ณฑ๊ทผ j๊ฐ€ ์•ฝ์ˆ˜์ธ์ง€๋ฅผ ํ™•์ธํ•ด์•ผํ•œ๋‹ค. 
           if(i % j === 0) { 
           // ๋งŒ์•ฝ i๊ฐ€ j๋กœ ๋‚˜๋ˆ„์–ด๋–จ์–ด์ง„๋‹ค๋ฉด ์•ฝ์ˆ˜.
                  count++;
       if(i / j != j) count++;
           }
    }
      count % 2 === 0 ? answer += i : answer -= i;
      // ์•ฝ์ˆ˜์˜ ๊ฐœ์ˆ˜๊ฐ€ ์ง์ˆ˜๋ฉด ๋”ํ•˜๊ณ  ํ™€์ˆ˜์ด๋ฉด ๋บ€๋‹ค.
    }
    return answer;
}

*๋ฌธ์ œ๋ฅผ ํ’€๋‹ค๊ฐ€, ์ผ์ •์‹œ๊ฐ„ ์ด์ƒ์ด ์ง€๋‚˜ ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์˜ ํ’€์ด๋ฅผ ์ฐธ๊ณ ํ•ด์„œ ํ’€์—ˆ๋‹ค. ๋‹ค์‹œํ•œ๋ฒˆ ํ’€์–ด๋ณด๋Š” ์‹œ๊ฐ„์„ ๊ฐ€์ ธ์•ผ๊ฒ ๋‹ค.