
νλ‘κ·Έλλ¨Έμ€ λ¬Έμ  νμ΄ - λ¬Έμμ΄μ μ μλ‘ λ°κΎΈκΈ° / 2016 / μ½μμ ν© / λ¬Έμμ΄ λ€λ£¨κΈ° κΈ°λ³Έ / κ°μ μ«μλ μ«μ΄ / λλμ΄ λ¨μ΄μ§λ μ«μ λ°°μ΄
Number.isInteger() / Number()μ parseInt() λΉκ΅
π μ²μ μμ±ν νμ΄
function solution(s) {
  return s.startsWith('+') ? `+${parseInt(s)}` : parseInt(s);
}
π μμ ν νμ΄
function solution(s) {
  return parseInt(s);
}
π λ΄κ° μμ±ν νμ΄
function solution(a, b) {
  const day = new Date(2016, a-1, b).getDay();
  switch (day) {
    case 0:
      return 'SUN';
    case 1:
      return 'MON';
    case 2:
      return 'TUE';
    case 3:
      return 'WED';
    case 4:
      return 'THU';
    case 5:
      return 'FRI';
    case 6:
      return 'SAT';
  }
}
π λ΄κ° μμ±ν νμ΄
μλλ for 루νλ₯Ό κ±°μ³ μμλΈ μ½μλ€μ λ³λμ λ°°μ΄μ λ°μμ κ·Έ μμλ€μ reduce ν¨μλ‘ λͺ¨λ λν΄μ£Όλ €κ³ νλ€.
κ·Έλ¬λ, μ²μλΆν° ν©κ³λ₯Ό μλ―Ένλ λ³μλ₯Ό μ§μ ν ν for 루νλ₯Ό κ±°μ³ μμλΈ μ½μλ€μ λ°λ‘ μ΄μ  ν©κ³μ λν΄μ£Όλ μμΌλ‘ λ°κΏ¨λ€.
function solution(n) {
  let sum = 0;
  for (let i = 1; i <= n; i++) {
    if (n % i === 0) {
      sum = sum + i;
    }
  }
  return sum;
}
π μ²μ μμ±ν νμ΄
function solution(s) {
  const convertToNumber = Number(s);
  if (isNaN(convertToNumber)) {
    return false;
  } else {
    if (s.length === 4 || s.length === 6) {
      return true;
    } else {
      return false;
    }
  }
}
π λ λ²μ§Έ μμ±ν νμ΄
μμμ  μλ¦¬κ° μλ μ«μλ₯Ό κ³ λ € μ νλ€. if (Number.isInteger(num))λ₯Ό μΆκ°νλ€.
μ¬μ ν νλκ° ν΅κ³Όκ° μλλ€.
function solution(s) {
  if (s.length === 4 || s.length === 6) {
    const num = Number(s);
    if (isNaN(num)) {
      return false;
    } else {
      if (Number.isInteger(num)) {
        return true;
      } else {
        return false;
      }
    }
  } else {
    return false;
  }
}
π μΈ λ²μ§Έ μμ±ν νμ΄
μ£Όμ΄μ§ λ¬Έμμ΄μ΄ '100.'μ΄μ΄λ trueκ° λμ€λ λ¬Έμ κ° μλ€. Number(100.)μ 100μ΄ λλ€. if (!s.includes('.'))λ₯Ό μΆκ°νλ€.
μ΄κ±Έ κ³ μ³λ μ¬μ ν νλκ° ν΅κ³Όκ° μ λλ€...
function solution(s) {
  if (s.length === 4 || s.length === 6) {
    if (!s.includes('.')) {
      const num = Number(s);
      if (Number.isInteger(num)) {
        return true;
      } else {
        return false;
      }
    } else {
      return false;
    }
  } else {
    return false;
  }
}
π λ€ λ²μ§Έ μμ±ν νμ΄ (μ΅μ’ π)
μμμ (.)λ§μ΄ λ¬Έμ κ° μλμλ€. λ¬Έμλ‘ ννλ μ«μ(16μ§μ λ±)μ Number()λ₯Ό μ¬μ©ν΄λ NaNμ΄ λ¨μ§ μκ³ μ«μλ‘ λ¬Έμ  μμ΄ λ³νμ΄ λλ€.
μ²μλΆν° λ€μ μμ±νλ€. for 루νλ₯Ό λλ € s λ¬Έμμ΄μ λ¬Έμ νλνλλ₯Ό Number()λ₯Ό μ΄μ©ν΄ μ«μλ‘ λ°κΎΌ ν 'μ΄κ²μ΄ μ μμΈμ§ νμΈ'νλ λ°©λ²μ μΌλ€. if (Number.isInteger(num))
λλμ΄ 100μ μ΄λ€.
function solution(s) {
  let numCount = 0;
  if (s.length === 4 || s.length === 6) {
    for (let i = 0; i < s.length; i++) {
      const num = Number(s[i]);
      if (Number.isInteger(num)) {
        numCount++;
      }
    }
    if (numCount === 4 || numCount === 6) {
      return true;
    } else {
      return false;
    }
  } else {
    return false;
  }
}
π₯ μ΄λ, λ¬ΈμμΈμ§ μ«μμΈμ§ νμΈνκΈ° μν΄ if (typeof num === 'number')λΌκ³  μΈ μ μλ€. λ¬Έμμ Number()λ₯Ό μ¬μ©ν΄ κ·Έ κ°μ΄ NaNμ΄ λμ€λλΌλ typeof κ°μ 무쑰건 numberκ° λ¨κΈ° λλ¬Έμ΄λ€.
π‘ Number(λ¬Έμμ΄) vs parseInt(λ¬Έμμ΄)
π
Number(λ¬Έμμ΄)
λ¬Έμμ΄μ λ¬Έμκ° ν¬ν¨λμ΄ μμΌλ©΄, κ·Έ κ°μ NaNμ΄ λμ¨λ€
λ¨, λ¬Έμμ΄μ΄ λ¬Έμλ‘ ννλ μ«μλΌλ©΄, κ·Έ κ°μ μ«μκ° λμ¨λ€
- ννΈ, typeofλ₯Ό μ¬μ©νλ©΄ 무쑰건 'number'λ‘ λμ¨λ€
 π
parseInt(λ¬Έμμ΄)
λ¬Έμμ΄μ λ¬Έμκ° ν¬ν¨λμ΄ μμ΄λ, parseInt()λ μ«μλ§ μΈμν΄ μ΄λ₯Ό κ·Έλλ‘ κ°μΌλ‘ λ³ννλ€ (μ μλ‘ λ³ν)
λ¨, λ¬Έμμ΄μ΄ λ¬Έμλ‘ μμνλ©΄, NaNμ λ³ννλ€. λν, λ¬Έμμ΄μ΄ λ¬Έμλ‘ ννλ μ«μλΌλ©΄, parseInt()λ ꡬ문 λΆμμ κ±°μΉ μ«μ(μ μ)λ₯Ό κ°μΌλ‘ λ³ννλ€.
- ννΈ, typeofλ₯Ό μ¬μ©νλ©΄ 무쑰건 'number'λ‘ λμ¨λ€
 // π Number(λ¬Έμμ΄) console.log(Number('a123')); // NaN console.log(typeof Number('a123')); // number console.log(Number('0x11')); // 17 (0x11μ 16μ§μλ‘ ννλ 17μ μλ―Ένλ€) console.log(typeof Number('0x11')); // number // π parseInt(λ¬Έμμ΄) console.log(parseInt('1a23')); // 1 console.log(typeof parseInt('1a23')); // number console.log(parseInt('a123')); // NaN console.log(typeof parseInt('a123')); // number console.log(parseInt('0x11')); // 17 (0x11μ 16μ§μλ‘ ννλ 17μ μλ―Ένλ€) console.log(typeof parseInt('0x11')); // number
π μ²μ μμ±ν νμ΄
function solution(arr) {
  const checkedValue = [];
  for (let i = 0; i < arr.length; i++) {
    if (checkedValue[arr[i]] === undefined) {
      checkedValue[arr[i]] = 1;
    } else {
      arr.splice(i, 1);
      i = i - 1;
    }
  }
  return arr.flat();
}
π λ λ²μ§Έ μμ±ν νμ΄
function solution(arr) {
  for (let i = 0; i < arr.length; i++) {
    if (arr[i] === arr[i-1]) {
      arr.splice(i, 1);
      i = i - 1;
    }
  }
  return arr;
}
π μΈ λ²μ§Έ μμ±ν νμ΄
function solution(arr) {
  const answer = [];
  let loop = 0;
  for (let i = 0; i < arr.length; i = i + loop + 1) {
    if (arr[i] === arr[i + 1]) {
      let startIndex = i;
      while (arr[startIndex] === arr[startIndex + 1]) {
        startIndex = startIndex + 1;
        loop++;
      }
      answer.push(arr[startIndex]);
    } else {
      answer.push(arr[i]);
    }
  }
  return answer;
}
π λ€ λ²μ§Έ μμ±ν νμ΄
for 루ν λ°μ μ μΈν loop λ³μκ° for 루νμμ iκ° ν λ² μνν νμλ μ΄κΈ°νλμ§ μκ³ κ·Έλλ‘μ¬μ μνλ λλ‘ κ°μ΄ λμ€μ§ μμ κ²μ΄μλ€.
λ¬Έμ λ₯Ό ν΄κ²°νκΈ° μν΄ iκ° ν λ² μνν νμ i = i + loop + 1μ ν΅ν΄ iμ κ°μ λ°κΎΌ ν, loopλ₯Ό 0μΌλ‘ μ΄κΈ°ννλ μ½λλ₯Ό μΆκ°νλ€.
100μ . ν¨μ¨μ± ν μ€νΈκΉμ§ ν΅κ³Όνλ€.
function solution(arr) {
  const answer = [];
  let loop = 0;
  for (let i = 0; i < arr.length; i = i + loop + 1) {
    loop = 0; // μ΄ λΆλΆλ§ μΆκ°!
    if (arr[i] === arr[i + 1]) {
      let startIndex = i;
      while (arr[startIndex] === arr[startIndex + 1]) {
        startIndex = startIndex + 1;
        loop++;
      }
      answer.push(arr[startIndex]);
    } else {
      answer.push(arr[i]);
    }
  }
  return answer;
}
π λ€λ₯Έ μ¬λμ νμ΄
filter() νμ©
λλ μ°μλ μ«μ μ€ μ²μ μ«μλ€λ§ λ½μ μλ‘μ΄ λ°°μ΄μ λ§λ€μ΄ 리ν΄νλλ°, μ΄ νμ΄μμλ μ΄μ  μ«μμ λ€λ₯Έ μ«μκ° λμ€λ©΄ κ·Έ μ«μλ§ κ³¨λΌ λ¦¬ν΄νλ€. νμ΄ μκ°μ λ΄κ° μ λ° μ λ λ 걸리긴 νλλ° λ΄κ° μΈλ°μμ΄ μκ°μ 볡μ‘νκ² ν κ±ΈκΉ.
function solution(arr) {
  return arr.filter((item, index) => item !== arr[index + 1]);
}
π λ΄κ° μμ±ν νμ΄
function solution(arr, divisor) {
  const newArr = arr.filter(x => x % divisor === 0).sort((a, b) => a - b);
  return newArr.length === 0 ? [-1] : newArr;
}
π λ€λ₯Έ μ¬λμ νμ΄
function solution(arr, divisor) {
  const newArr = arr.filter(x => x % divisor === 0);
  return newArr.length === 0 ? [-1] : newArr.sort((a, b) => a - b);
}
νλ‘κ·Έλλ¨Έμ€ λ¬Έμ  νμ΄
μ± 'λꡬλ μλ£ κ΅¬μ‘°μ μκ³ λ¦¬μ¦' μ΄μ΄μ μ½κΈ°