[프로그래머스] 숨어있는 숫자의 덧셈 (2)

stella·2023년 1월 10일
0

Algorithm

목록 보기
12/40
post-thumbnail

문제

문자열 my_string이 매개변수로 주어집니다. my_string은 소문자, 대문자, 자연수로만 구성되어있습니다. my_string안의 자연수들의 합을 return하도록 solution 함수를 완성해주세요.


1. JavaScript 정규식으로 숫자만 추출하기

Javascript 문자열에서 숫자만 추출하고 싶을 때 2가지 방법이 있다.
1. match 와 정규식 사용하기
2. replace 와 정규식 사용하기

숫자가 아닌 문자를 모두 선택하는 정규식
/[^0-9]/g

정규식 형식으로 / 사이에 모든 숫자를 매칭하는 [0-9]에 부정을 뜻하는 ^ 를 붙여 [^0-9] 를하면 모든 숫자를 제외한 문자만을 매칭하고 발생할 모든 패턴에 대한 전체 검색을 뜻하는 플래그인 g를 붙여 만듭니다.

1.1. match 와 정규식 사용하기

const my_string = "aAb1B2cC34oOp";
const num = my_string.match(/[0-9]/g);

num; //	[ '1', '2', '3', '4' ]

이어진 숫자 출력해보기

const my_string = "aAb1B2cC34oOp";
const num = my_string.match(/[0-9]+/g); // [0-9] 뒤에 +를 붙여주면 이어진 숫자는 붙어서 출력이됨

num; //	[ '1', '2', '34' ]

1.2. replace 와 정규식 사용하기

const my_string = "aAb1B2cC34oOp";
const num = my_string.replace(/[^0-9]/g, "");

num; //	1234

2. map 함수를 이용해서 num 배열에 요소를 전부 number 형으로 반환하기

  • 삼항연산자를 사용하여 num 배열에 요소가 참이면? 배열의 요소를 더한값을 return, 거짓이면? return 0
function solution(my_string) {
    const num = my_string.match(/[0-9]+/g); // [ '1', '2', '34' ]
    
    return num ? num.map(a => Number(a)) : 0;  
}

3. reduce 를 사용하여 배열의 요소를 더해서 반환하기

function solution(my_string) {
    const num = my_string.match(/[0-9]+/g); // [ '1', '2', '34' ]
    
    return num ? num.map(a => Number(a)).reduce((acc, cur) => acc + cur, 0) : 0; // 37
}
profile
Frontend Engineer

0개의 댓글