1. 문제
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
2. 풀이
function solution(my_string) {
var answer = 0;
let arr = [];
for (let i = 0; i < my_string.length; i++) {
Number(my_string[i]) || Number(my_string[i]) === 0
? arr.push(Number(my_string[i]))
: arr.push(" ");
}
const numArr = arr.join("").split(" ");
for (let j = 0; j < numArr.length; j++) {
Number(numArr[j]) ? (answer += Number(numArr[j])) : (answer += 0);
}
return answer;
}
3. 다른 사람 풀이
function solution(my_string) {
var answer = 0;
answer = my_string.split(/\D+/).reduce((acc, cur) => acc + Number(cur), 0);
return answer;
}
4. ★
나는 for문을 사용해 숫자와 공백만을 담은 배열을 만들고 배열에서 숫자를 더해주는 코드를 작성해 통과했지만, 아주 간단하게 해결할 수 있는 코드가 있었다.
정규 표현식을 사용한 코드였는데, 바로 \D 와 +를 활용한 것이다.
정규 표현식에서 \D는 숫자가 아닌 것을, +는 한개 or 여러 개를 의미하는 기호인데 "하나 혹은 그 이상 연결된 숫자가 아닌 것"을 의미한다.
정규표현식과 split 함수를 활용해 숫자와 공백만을 담은 배열을 만들어주고, reduce로 누적해서 더해주면 코드 한줄로 풀 수 있는 문제였다.
정규 표현식과 관련해서도 정리 하면서 블로그에 기록해보면 좋을 것 같았다. 정규 표현식 메모!