문자열을 입력받아 문자열에서 숫자를 모두 찾아 더한 뒤에 해당 값을 (숫자와 공백을 제외한 나머지) 문자열의 길이로 나눈 값을 정수로 반올림하여 리턴해야 합니다.
빈 문자열을 입력받은 경우, 0을 리턴해야 합니다.
숫자(digit)는 연속해서 등장하지 않습니다.
let output = numberSearch('Hello6 ');
console.log(output); // --> 1
output = numberSearch('Hello6 9World 2,');
console.log(output); // --> 2
output = numberSearch('Hello6 9World 2, Nic8e D7ay!');
console.log(output); // --> 2
function solution(str){
let sum = 0;
let newStr = "";
const digits = "0123456789";
if(str === ""){
return 0;
}
for(let i = 0; i < str.length; i++){
if(digits.includes(str[i])){
// 반드시 Number를 붙여줘야 합니다. Number가 없는 경우 아스키코드로 인식함
sum += Number(str[i]);
} else if(str[i] !== " "){
newStr += str[i];
}
}
return Math.round(sum / newStr.length);
}
digits을 선언 후 0~9까지의 숫자를 담아줍니다. 이후 includes를 활용해 해당 숫자를 포함하고 있는 경우 선언된 sum에다가 Number(str[i])를 담아줍니다.
공백을 제외한 나머지 문자열을 구하는 값이기 때문에 (str[i] !== " ")를 통해 newStr에 문자를 넣어줍니다.
문제에서 요청하는 값은 문자열에서 숫자를 모두 찾아 더한 후 해당 값을 문자열의 길이로 나눈 값을 정수로 반올림하랍니다.
따라서 Math.round를 통해 반올림하고 Sum / newStr.length로 원하는 결과값을 찾을 수 있었습니다.