덧셈 숫자
더하기 숫자는 숫자가 더하기 시퀀스를 형성할 수 있는 숫자 문자열입니다.
유효한 덧셈 시퀀스에는 최소 3개의 숫자가 포함되어야 합니다. 처음 두 숫자를 제외하고 시퀀스의 각 후속 숫자는 앞의 두 숫자의 합이어야 합니다. 숫자 '0'-'9'만 포함하는 문자열이 주어지면 덧셈 숫자인지 판별하는 함수를 작성하십시오.
참고 − 더하기 시퀀스의 숫자는 선행 0을 가질 수 없으므로 시퀀스 1, 2, 03 또는 1, 02, 3은 유효하지 않습니다.
예를 들어 -
문자열 "199100199"는 더하기 숫자이므로 더하기 시퀀스는 − 1, 99, 100, 199 −
입니다.1 + 99 = 100, 99 + 100 = 199
예시
이에 대한 코드는 -
const str = "199100199";
const isAdditiveNumber = (numStr) => {
if(numStr.length < 3) return false;
let str = "";
let seen = true;
for(let i = numStr.length − 1; i > 1; i−−){
str = `${numStr[i]}${str}`;
if(numStr[i] === "0") continue;
let s = str;
let s2 = numStr[i − 1]
for(let j = i − 2; j >= 0; j−−){
if(`${s2}`.startsWith("0") && s2.length > 1){
s2 = `${numStr[j]}${s2}` seen = false;
} else if(parseInt(s) >= parseInt(s2)){
let diff = s − s2;
if(numStr.slice(0, j + 1).endsWith(diff)){
s = s2;
s2 = diff;
let ind = Math.floor(Math.log10(diff));
ind = ind < 0 ? 0 : ind
j −= ind;
seen = true;
}else {
s2 = `${numStr[j]}${s2}`
seen = false;
}
}else{
seen = false;
break;
}
}
if(seen) return seen;
};
return seen;
};
console.log(isAdditiveNumber(str)); 출력
콘솔의 출력은 -
true