[프로그래머스_JavaScript] 숨어있는 숫자의 덧셈 (1)
문제 설명
문자열 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합니다.
유의사항
- 연속된 숫자도 각각 한 자리 숫자로 취급합니다.
풀이순서
1. 숫자가 아닌 모든 문자열을 공백으로 대체한다.
2. 숫자만 존재하는 문자열을 각각의 원소를 나누어준다.
3. 문자열인 각각의 숫자를 숫자로 바꾸어 모두 더한다.
const solution = (my_string) => {
return my_string
.replace(/[a-zA-Z]/g, "") // 숫자가 아닌 모든 문자를 공백으로 대체한다.
.split("") // 하나의 문자열인 숫자를 각각의 원소로 나눈다.
.reduce((acc, current) => acc + parseInt(current), 0); // 문자열을 숫자열로 바꾸어 모두 더한다.
};
다른 풀이방식
const solution = (my_string) => {
return (my_string.match(/\\d/g) || []).reduce((sum, digit) => sum + +digit, 0);
};
function solution(my_string) {
let sum = 0;
for (let i = 0; i < my_string.length; i++) {
const char = my_string[i];
if (char >= '0' && char <= '9') {
sum += parseInt(char);
}
}
return sum;
}
위의 풀이방식을 통해 정규표현식에 대하여 이해하였고 reduce() 함수의 사용이 더 익숙해졌습니다.
문제 출처 : https://school.programmers.co.kr/learn/courses/30/lessons/120851
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr