문자열 my_string
이 매개변수로 주어집니다. my_string
은 소문자, 대문자, 자연수로만 구성되어있습니다. my_string
안의 자연수들의 합을 return하도록 solution 함수를 완성해주세요.
1 ≤ my_string의 길이 ≤ 1,000
1 ≤ my_string 안의 자연수 ≤ 1000
function solution(my_string) {
var answer = 0;
var my_num = my_string.split("");
var check = "";
for (let i = 0; i < my_num.length; i++) {
if (parseInt(my_num[i]) > 0) {
check += my_num[i];
} else {
if (parseInt(check) > 0) {
answer += parseInt(check);
check = "";
}
}
}
return answer;
}
my_string
을 split
한 my_num
배열을 만든다.my_num
배열을 순환하면서 숫자화시켰을 때 해당 값이 0보다 크면 check
문자열에 값을 넣는다.check
문자열을 숫자화시킨 값이 0보다 크면 answer
에 parseInt(check)
값을 더하고 check
를 초기화 한다."a1b23"
: 마지막에 숫자가 오는 경우 check
에 23이라는 값을 담지만 for문이 끝나버려서 answer
에 더해지지 않는다. "a10b23"
: 0이 들어가는 숫자가 나오는 경우 0을 인식하지 못하고 0을 뺀 숫자가 answer
에 더해진다.function solution(my_string) {
var answer = 0;
var my_num = my_string.split("");
var check = "";
for (let i = 0; i < my_num.length+1; i++) {
if (parseInt(my_num[i]) >= 0) {
check += my_num[i];
} else {
if (parseInt(check) > 0) {
answer += parseInt(check);
check = "";
}
}
}
return answer;
}
check
에 담긴 값이 더해질 수 있도록 한다.parseInt(my_num[i])
값이 0일 수도 있기 때문에 0보다 크거나 같을 때로 조건을 변경한다.var my_num = my_string.split("").filter(word => typeof(parseInt(word) == Number));