🌴 문제
문자열을 입력받아 문자열에서 숫자를 모두 찾아 더한 뒤에 해당 값을 (숫자와 공백을 제외한 나머지) 문자열의 길이로 나눈 값을 정수로 반올림하여 리턴해야 합니다.
🌴 주의 사항
- 문자열을 입력받은 경우, 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
🌴 힌트
- 진 문자(길이 1의 문자열)이 숫자(digit)인지 판단하는 방법은 여러 가지 입니다.
- 중 하나는 해당 문자가 숫자들의 집합(문자열 또는 배열)에 속하는 지를 판단하는 것입니다.
- 관련해서 js includes를 검색해 봅니다.
🌴 문제 풀이
function numberSearch(str) {
// TODO: 여기에 코드를 작성합니다.
// 문자열에서 숫자를 모두 찾아 더한 뒤에 해당 값을 문자열의 길이로 나눈 값을 정수로 반올림하여 리턴
//(숫자와 공백을 제외한 나머지 문자)
// 해당 문자열을 순회하면서 해당 요소가 문자인지 숫자인지 나누기
if(str.length === 0) return 0;
const arr = str.split('');
const arrStr = [];
const arrNum = [];
arr.map((el)=>{
if(isNaN(el) === true && el !== ' '){
arrStr.push(el);
}
if(isNaN(el) === false && el !== ' '){
arrNum.push(el);
}
})
// 숫자 요소들 더하기
const sumNum = arrNum.reduce((acc, cur)=>{
return Number(acc)+Number(cur);
}, 0);
// 더한 값을 문자열로 나누고 정수로 반올림시키기
const result = Math.round(sumNum / arrStr.length);
return result;
}
isNaN( ) : 문자열이 숫자인지 체크해서 숫자일 경우 false
를 리턴하고, 숫자가 아닐 경우 true
를 리턴한다.
console.log(isNaN('123')) // false
console.log(isNaN('123.1')) // false
console.log(isNaN(123)) // false
console.log(isNaN(-123)) // false
console.log(isNaN('abc')) // true
console.log(isNaN('123 + 123')) // true
console.log(isNaN(undefined)) // true
console.log(isNaN({})) // true
console.log(isNaN('')) // true
console.log(isNaN([])) // false
console.log(isNaN(true)) // false
console.log(isNaN(false)) // false
console.log(isNaN(' ')) // false
배열과 객체 빈 문자열, blloean일 때의 값이 모두 다르기 때문에 잘 확인하고 써야한다.
// Refference
function numberSearch(str) {
const digits = '0123456789';
if (str === '') {
return 0;
}
let sum = 0;
let pureStr = '';
for (let i = 0; i < str.length; i += 1) {
if (digits.includes(str[i])) {
// 숫자인 경우
sum = sum + Number(str[i]);
} else if (str[i] !== ' ') {
// 숫자도 공백도 아닌 경우
pureStr = pureStr + str[i];
}
}
// 결과를 반올림 한다.
return Math.round(sum / pureStr.length);
}
'알고리즘' 카테고리의 다른 글
compressString (0) | 2022.06.22 |
---|---|
decryptCaesarCipher (0) | 2022.06.21 |
isIsogram (0) | 2022.06.16 |
modulo (0) | 2022.06.15 |
superIncreasing (0) | 2022.06.14 |