
문자열 my_string이 매개변수로 주어집니다. my_string안의 모든 자연수들의 합을 return하도록 solution 함수를 완성해주세요.
1 ≤ my_string의 길이 ≤ 1,000
my_string은 소문자, 대문자 그리고 한자리 자연수로만 구성되어있습니다.
my_string | result
"aAb1B2cC34oOp" | 10
"1a2b3c4d123" | 16
입출력 예 #1
"aAb1B2cC34oOp"안의 한자리 자연수는 1, 2, 3, 4 입니다. 따라서 1 + 2 + 3 + 4 = 10 을 return합니다.
입출력 예 #2
"1a2b3c4d123Z"안의 한자리 자연수는 1, 2, 3, 4, 1, 2, 3 입니다. 따라서 1 + 2 + 3 + 4 + 1 + 2 + 3 = 16 을 return합니다.
function solution(my_string) {
var answer = 0;
let arr = [...my_string];
let num = arr.filter((value) => value != '');
console.log(num);
for ( i = 0; i < num.length; i++) {
answer += i;
}
return answer;
}
function solution(my_string) {
var answer = 0;
let arr = [...my_string];
let num = arr.filter((value) => !isNaN(value));
for ( i = 0; i <= num.length; i++) {
answer += i;
}
return answer;
}
function solution(my_string) {
var answer = 0;
let arr = [...my_string];
let num = arr.filter((value) => !isNaN(value));
console.log(num);
for ( i = 0; i < num.length; i++) {
answer += parseInt(num[i]);
}
return answer;
}
my_string을 배열에 담고 그 배열을 filter를 통해 string만 제거하려고 했었다.
검색하기 전엔 isNaN을 몰랐기 때문에 ''를 적고 num에 무엇이 담겨있는지 먼저 확인을 했다.
isNaN() - 매개변수가 숫자인지 검사하는 함수 (NaN은 Not a Number다.)
isNaN 함수를 찾고 나니 for문에서 막혀버렸다. 그래서 i번째 num을 문자열에서 정수로 바꿔주는 메서드를 사용했고, answer에 더하는 방식으로 코드를 바꾸었다. 그리고 i가 0부터 시작하니까 <=가 아닌 <로 바꾸었더니 통과되었다.