Algorithm/Programmers
[프로그래머스 JS] 숨어있는 숫자의 덧셈 (2)
그랴
2022. 12. 7. 17:54
더보기
제한사항
입출력 예my_stringresult
입출력 예 설명
문제 설명
문자열 my_string이 매개변수로 주어집니다. my_string은 소문자, 대문자, 자연수로만 구성되어있습니다. my_string안의 자연수들의 합을 return하도록 solution 함수를 완성해주세요.
제한사항
- 1 ≤ my_string의 길이 ≤ 1,000
- 1 ≤ my_string 안의 자연수 ≤ 1000
- 연속된 수는 하나의 숫자로 간주합니다.
- 000123과 같이 0이 선행하는 경우는 없습니다.
- 문자열에 자연수가 없는 경우 0을 return 해주세요.
입출력 예my_stringresult
"aAb1B2cC34oOp" | 37 |
"1a2b3c4d123Z" | 133 |
입출력 예 설명
입출력 예 #1
- "aAb1B2cC34oOp"안의 자연수는 1, 2, 34 입니다. 따라서 1 + 2 + 34 = 37 을 return합니다.
입출력 예 #2
- "1a2b3c4d123Z"안의 자연수는 1, 2, 3, 4, 123 입니다. 따라서 1 + 2 + 3 + 4 + 123 = 133 을 return합니다.
- 연속된 수는 하나의 숫자로 간주합니다.
이 조건때문에 조금 까다로웠다. 그래서 문자들은 모두 빈 문자열로 바꿔준 후, 배열 필터링을 통해 제거해주었다.
function solution(my_string) {
let answer = 0;
let num_arr = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'];
let num_str = '';
my_string.split('').map((s)=>{
if(num_arr.includes(s)){
num_str += s;
} else {
num_str += ' ';
}
})
let arr = num_str.split(' ').filter(s => s !== '');
arr.map((e)=>{
let n = parseInt(e);
answer += n;
})
return answer;
}