두 개의 수를 입력받아 두 수를 포함해 두 수 사이의 수 중 2의 배수의 개수를 리턴해야 합니다.
number
타입의 정수 (num1 >=0)number
타입의 정수 (num2 >=0)number
타입을 리턴해야 합니다.for
)을 사용해야 합니다.num1
이 num2
보다 작지 않을 수도 있습니다.let output = makeMultiplesOfDigit2(8, 12);
console.log(output); // --> 3
output = makeMultiplesOfDigit2(12, 8);
console.log(output); // --> 3
output = makeMultiplesOfDigit2(1, 3);
console.log(output); // --> 1
output = makeMultiplesOfDigit2(0, 0);
console.log(output); // --> 0
output = makeMultiplesOfDigit2(2, 2);
console.log(output); // --> 1
function makeMultiplesOfDigit2(num1, num2) {
let large
let small
if(num1 === 0 && num2 === 0) {
return 0;
}
if(num1 >= num2) {
large = num1
small = num2
} else if (num1 < num2) {
large = num2
small = num1
}
let result = 0
for(let i = small; i <= large; i++) {
if(i % 2 === 0) {
result = result + 1
}
}
return result;
}
테스트 코드의 오류 메세지를 보니, 연산을 1번씩 더 진행한 형태를 보였다.
debugger
를 통해 확인해 보니 small
이 0이라서 연산을 한번 더 해버리는 문제가 있었다.
if (small === 0) {
small = 1
}
이 조건문을 중간에 삽입했더니 불필요한 연산을 더 진행하지 않아 테스트케이스를 통과했다.
수를 입력받아 소수(prime number)인지 여부를 리턴해야 합니다.
number
타입의 수boolean
타입을 리턴해야 합니다let output = isPrime(2);
console.log(output); // --> true
output = isPrime(6);
console.log(output); // --> false
output = isPrime(17);
console.log(output); // --> true
function isPrime(num) {
for (let i = 2; i < num; i++) {
if(num % i === 0) {
return false;
}
}
return true;
}
이건 Math
를 이용한 다른 방법으로 풀다가 화딱지나서 초기화시키고 그냥 맨바닥에서 코드를 작성해 보았는데, 생각보다 쉬웠다. 반복문이 도는 동안 그게 0으로 나뉘어 떨어지면 소수인 것이다.
역시 코드를 짤 땐 간결하게 생각하는 것이 좋은 듯 하다.