Pre Hiring Assessments
μ€λμ ν리 μ½μ€ λ§μ§λ§ μΌμ μ΄μ μ΄λ¨ΈμλΈ μ½μ€ λ€μ΄κ°κΈ° μ λ§μ§λ§ μκΈ° μ§λ¨μ ν μ μλ Pass me assessmentsκ° μμλ€. ν μ΄ λ¬Έμ λμ΄λ 4κ°λ κ±°λ¬νκ² νμ΄μΌ νλ€λ λ§μ λ£κ³ μ¬μ€ μ΄μ§ κΈ΄μ₯μ ν μνμλλ° λ¬Έμ λ₯Ό 보μλ§μ κ²μ μ£Όλ €κ³ νλ거ꡬλ... λΌλ μκ°μ΄ λ€ μ λλ‘ μ΄λ ΅μ§ μμ λ¬Έμ λ€μ΄μλ€.
ν΄λ‘μ μ λν μ΄ν΄ μ¬κ·ν¨μλ‘ μ½λλ₯Ό μμ±ν μ μλμ§ λ°°μ΄ λ©μλλ₯Ό μ νμ©ν μ μλμ§ κ·Έ μ λ νμΈνλ ν μ€νΈλΌκ³ μκ°ν΄λ μ’μκ±° κ°λ€.
μ¬μ€ κ±±μ λ° κΈ°λ λ°μ΄μλλ° μ’ ν무ν κΈ°λΆμ΄ μλ€. λ§ν μμ΄ λ¬Έμ κ° νλ €μ λ΄κ° κ·Έλλ 곡λΆλ₯Ό μ΄μ¬ν νꡬλ λΌλ μκ°λ λ€λ©΄μ μ‘°κΈ λ μ΄λ €μ΄ λμ΄λμμΌλ©΄ μ’κ² λ€λ μκ°λ λ€κ³ μ’ λ³΅ν©μ μ΄μλ€. μ€μ§μ μΌλ‘ λ¬Έμ νμ΄λ 30λΆ μ λ κ±Έλ Έλκ±° κ°λ€.
λ¬΄νΌ κ·Έλ κ² ν μ€νΈλ₯Ό μ’ λ£νκ³ μ΄μ νλ μλ£κ΅¬μ‘°μ μκ³ λ¦¬μ¦ κ³΅λΆλ₯Ό λ€μ νκ³ λ¬Έμμ΄ μ²λ¦¬μ λ°°μ΄μ λν λ΄μ©μ λν΄μ 볡μ΅μ νλλ° μμλ μ κ·μμ μ μ°λ©΄ κΉλ¨ΉλλΌ... λ€μ 볡μ΅μ΄ νμμ μΌλ‘ νμν λΆλΆμ΄λ€.
κ·Έλ¦¬κ³ μ½κΈ° μ’μ μ½λκ° μ’μ μ½λλ€ μ± μ΄ λμ°©ν΄μ μ‘°κΈ μ½μ΄λ΄€λλ° λΉμ°νκ² μκ³ μλ λ΄μ©μ΄μμ§λ§ κ·Έλ¬λ©΄ μλλκ±° μλ©΄μ μλͺ» λ μ½λ μμ±μ νκ³ μλ λ μμ μ΄ κ΅μ₯ν λΆλλ½λλΌ.... μ± μ μ½μΌλ©΄μ λΆλλ½κ³ νΌλλ λλμ μ²μμ΄μλ€. μ΄λ²μ£Όμ κΌ μλ μ νκ³ μ΄μ λΆν°λ μ’ λ μμ§μ μ½λλ₯Ό μμ±ν μ μλλ‘ λ Έλ ₯ν΄λ³΄μ..!
리μ‘νΈλ νλ¬ μ λ μ¬λκΉ λ€μ λ 리μ μ΄ λλ λλμ΄λΌ λ Έλ§λ μ½λ λκΌ΄λΌμ€κ° μ΄λ²μ μ΄ μ± μ ꡬ맀ν΄μ κΈ°λ³Έ 볡μ΅μ μ ν΄λ³΄λ €κ³ νλ€.
λμΆ© λ΄μ©μ 보λ μ΄λ €μ΄ λ΄μ©μ λΉμ°ν μμ΄ λ³΄μκ³ κ·Έλ₯ μ¬λ°λ μ± μ½λλ€ λΌλ λλμΌλ‘ μ½μ΄λ³΄λ©΄ μ’μ κ±° κ°λ€.μ΄λ² μλ‘ μν¬μμ μ±κΈΈ 건 λ§μ§λ§ ν΄μκ³Ό κΈ°λ³ΈκΈ° 볡μ΅, κΈ°λ³Έ μμ λ± μ΄λΌκ³ μκ°νλ€. μμ°¨κ² μκ°μ μ¨λ³΄μ..!
const primeFactors = n => {
let result = [];
while (n % 2 === 0) {
result.push(2);
n /= 2;
}
for (let i = 3; i * i <= n; i += 2) {
while (n % i === 0) {
result.push(i);
n /= i;
}
}
if (n > 2) {
result.push(n);
}
return result;
};
μ μ½λμ μκ° λ³΅μ‘λλ O(sqrt(n))μ΄λ€. 첫λ²μ§Έ while λ¬Έμμ 2λ‘ λλμ΄ λ¨μ΄μ§λ©΄ 2λ₯Ό λ°°μ΄μ μΆκ°νκ³ nμ nμ 2λ‘ λλκ°μ ν λΉν΄μ€λ€. κ·Έλ¦¬κ³ forλ¬Έμμ 3λΆν° 2μ© μ¦κ°νλ©° μ κ³±μ κ°μ΄ nλ³΄λ€ μμ λ²μμμ whileλ¬ΈμΌλ‘ λ λ°λ³΅ μμ
μ ν΄μ€λ€.
κ·Έλ¦¬κ³ μ΄ κ²½μ°λ₯Ό λ€ ν΅κ³Όν 2λ³΄λ€ ν° nμ λ°°μ΄μ μΆκ°ν΄μ€λ€.
const modularExponentiationUsingPow = (base, exponent, modulus) => {
return Math.pow(base, exponent) % modulus;
};
console.log(modularExponentiationUsingPow(4, 3000, 5)); //NaN
baseκ°μ exponent λ§νΌ μ κ³±ν κ°μ modulusλ‘ λλ λλ¨Έμ§ κ°μ ꡬνλ μμ΄λ€.
νμ§λ§ μμ κ°μ΄ Math.powλ₯Ό μ¬μ©ν κ³μ° λ°©λ²μ μ§μμ ν¬κΈ°κ° 컀μ§λ€λ©΄ κ°μ κ³μ°νμ§ λͺ»νλ€.
λ°λΌμ μλμ κ°μ λ°©λ²μΌλ‘ λ³κ²½μ ν΄μ£Όμ΄μΌνλ€.
const modularExponentiation = ({ base, exponent, modulus }) => {
if (modulus === 1) return 0;
let value = 1;
for (let i = 0; i < exponent; i++) {
value = (value * base) % modulus;
}
return value;
};
console.log(modularExponentiation({ base: 4, exponent: 3000, modulus: 5 })); // 1
μ μ½λμ μκ° λ³΅μ‘λλ O(n) μ΄λ€. μ§μμ ν¬κΈ°κ° μ무리 μ»€μ Έλ μ°μ°μ΄ κ°λ₯νλ€.
const allPrimesLessThanN = n => {
let result = [];
for (let i = 0; i < n; i++) {
if (isPrime(i)) {
result.push(i);
}
}
return result;
};
const isPrime = number => {
if (number <= 1) return false;
if (number <= 3) return true;
if (number % 2 === 0 || number % 3 === 0) return false;
for (let i = 5; i * i <= number; i += 6) {
if (number % i === 0 || number % (i + 2) === 0) return false;
}
return true;
};
console.log(allPrimesLessThanN(29)); //[2, 3, 5, 7, 11, 13, 17, 19, 23]
isPrimeμ΄λΌλ μμλ₯Ό νλ³ν΄μ£Όλ ν¨μλ₯Ό μμ±νκ³ allPrimesLessThanN ν¨μμμ λ°λ³΅λ¬Έμ ν΅νμ¬ μ‘°κ±΄μ λ§μ‘±νλ©΄ λ°°μ΄μ μΆκ°ν΄μ λ°νν΄μ£Όλλ‘ μμ±μ ν΄μ£Όμλ€. μκ° λ³΅μ‘λλ O(sqrt(n)) μ΄λ€.