/*
https://school.programmers.co.kr/learn/courses/30/lessons/77884

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

์ œํ•œ์‚ฌํ•ญ
1 โ‰ค left โ‰ค right โ‰ค 1,000
*/

/*
  1. ์ผ๋‹จ ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ์•ฝ์ˆ˜๊ฐ’์„ ๊ตฌํ•ด์•ผํ•จ
  2. ์•ฝ์ˆ˜์˜ ๊ฐœ์ˆ˜๋ฅผ ์•Œ์•„์•ผํ•จ
  3. ์•ฝ์ˆ˜์˜ ๊ฐœ์ˆ˜๊ฐ€ ํ™€์ˆ˜์ด๋ฉด ํ•ด๋‹น ๋งค๊ฐœ๋ณ€์ˆ˜๋Š” ๋งˆ์ด๋„ˆ์Šค, ์•ฝ์ˆ˜์˜ ๊ฐœ์ˆ˜๊ฐ€ ์ง์ˆ˜์ด๋ฉด ํ•ด๋‹น ๋งค๊ฐœ๋ณ€์ˆ˜๋Š” ํ”Œ๋Ÿฌ์Šค
  4. ํ•ด์„œ ๋ˆ„์ ์‹œํ‚จ ๊ฐ’ ๋„์ถœ ์‹œํ‚ค๋ฉด ๋จ
*/
const solution = (left, right) => {
  let answer = 0;
  // i๋Š” left ๊ฐ’๋ถ€ํ„ฐ ~ right ๊ฐ’์ด๋ž‘ ๊ฐ™์•„์งˆ๋•Œ๊นŒ์ง€ for๋ฌธ์„ ๋Œ๋ฆผ
  // ์ด์ค‘ for๋ฌธ์œผ๋กœ j๋Š” 0๋ถ€ํ„ฐ i๊ฐ’(right ๊ฐ’)์ด๋ž‘ ๊ฐ™์•„์งˆ๋•Œ๊นŒ์ง€ ๋Œ๋ฆผ
  for (let i = left; i <= right; i++) {
    let val = [];
    for (let j = 0; j <= i; j++) {
      if (i % j === 0) val.push(j);
      // i(left~right)๊ฐ’๊ณผ j(0~right)๊ฐ’์ด ๋‚˜๋ˆ ์ง„๋‹ค๋ฉด j๊ฐ’์€ i๊ฐ’์˜ ์•ฝ์ˆ˜์ด๊ธฐ์— ๋นˆ ๋ฐฐ์—ด์— j๊ฐ’์„ ํ‘ธ์‰ฌ
    }
    val.length % 2 === 0 ? (answer += i) : (answer -= i); // ๋ฐฐ์—ด์˜ ๊ธธ์ด๊ฐ€ 2๋กœ ๋‚˜๋ˆ ์ง„๋‹ค๋ฉด ์•ฝ์ˆ˜์˜ ๊ฐœ์ˆ˜๊ฐ€ ์ง์ˆ˜์ด๊ธฐ์— ๋Ÿฌ์Šค, ๋ฐ˜๋Œ€์˜ ๊ฒฝ์šฐ์—” ํ™€์ˆ˜์ด๊ธฐ์— ๋งˆ์ด๋„ˆ์Šค
  }
  return answer;
};

console.log(solution(13, 17));
console.log(solution(24, 27));

/*
๋‹ค๋ฅธ ์‚ฌ๋žŒ์˜ ํ’€์ด
function solution(left, right) {
    var answer = 0;
    for (let i = left; i <= right; i++) {
        if (Number.isInteger(Math.sqrt(i))) {
            answer -= i;
        } else {
            answer += i;
        }
    }
    return answer;
}
์ œ๊ณฑ๊ทผ์ด ์ •์ˆ˜๋ฉด ์•ฝ์ˆ˜์˜ ๊ฐœ์ˆ˜๊ฐ€ ํ™€์ˆ˜๋‹ค
*/
๋ณต์‚ฌํ–ˆ์Šต๋‹ˆ๋‹ค!