본문 바로가기
Algorithm/Programmers

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

by 그랴 2022. 12. 7.
더보기

문제 설명

문자열 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;
}