Instructions
Given a positive integer n: 0 < n < 1e6, remove the last digit until you're left with a number that is a multiple of three.
Return n if the input is already a multiple of three, and return null if no such number exists.
Examples
1 => null
25 => null
36 => 36
1244 => 12
952406 => 9
My solution:
const prevMultOfThree = n => {
let arr = n.toString().split('')
for(let i = 0; i<arr.length; i++){
for(let j = 0; j<arr.length; i++){
let sum = +arr.join('')
if( sum % 3 === 0) return sum
arr.pop()
}
return null
}
}
Explanation
First I splitted the number into an string array
let arr = n.toString().split('')
Then after that I used a loop that iterated until i is equal to the array length.
Inside of this array I used anothe for loop that still iterated the same array, inside of this loop I made the variable "sum" that is equal to the array joined and converted it to a number with the + operator, after that I added a conditional that checked if it is divisible by 3, if it is divisible by 3 it will return 3, but if not it will continue the loop but with the array without the last element, using arr.pop()
for(let j = 0; j<arr.length; i++){
let sum = +arr.join('')
if( sum % 3 === 0) return sum
arr.pop()
}
if the loop is over and the array is still empty, it means that any number was divisible by 3, so it returns null
return null
Comment how would you solve this kata and why? 👇🤔
Top comments (0)