https://school.programmers.co.kr/learn/courses/30/lessons/181914
음이 아닌 정수를 9로 나눈 나머지는 그 정수의 각 자리 숫자의 합을 9로 나눈 나머지와 같은 것이 알려져 있습니다.
이 사실을 이용하여 음이 아닌 정수가 문자열
number
로 주어질 때, 이 정수를 9로 나눈 나머지를 return 하는 solution 함수를 작성해주세요.
function solution(number) {
return number.split('').map(Number).reduce((a,b)=>a+b)%9
}
console.log(solution("123"))
function solution(number) {
// 인수로 받은 값을 배열로 만들어준후 다 더해준후 9로 나눈 나머지 값을 출력한다.
return number.split('').map(Number).reduce((a,b)=>a+b)%9
}
console.log(solution("123"))
function solution(number) {
return Number(number)%9
}
console.log(solution("123")) //6
//왜 2가 아니라 5가 나오는 것일까?
console.log(solution("78720646226947352489")) //5
숫자는 64비트 부동소수점 형식으로 명시되어 있으며, 숫자를 저장하려면 정확히 64비트가 필요하다. 그래서 숫자가 너무 커지면 64비트 공간이 넘쳐서
Infinity
로 처리된다.
console.log(78720646226947352489) //78720646226947360000
🧐 위의 코드처럼 64비트를 넘는 숫자를 출력하면 64비트가 넘는 숫자는 저장이 안되어 위 코드처럼 출력된다. 그래서 console.log(solution("78720646226947352489"))
의 값이 2
가 아닌 78720646226947360000
를 9
로 나눴을때 나오는 나머지 값인 5
가 나오는 것이다.