숨어있는 숫자의 덧셈

김종현·2023년 4월 1일
0

1. 막힌 부분

  • 문자열을 배열로 만들어 sort를 통해 정렬함으로써 알파벳과 숫자를 분리해보려고 했으나 숫자가 문자열로 입력되었기에 잘 되지 않았다.
    -배열 매소드로 각 값을 parseInt를 해주고 typeof를 통해 숫자인 요소만 남겨보려 했으나 undefined가 반환되어 실패했다.
function solution(my_string) {
    var count = 0;
    var ans = []
    Array.from(my_string).forEach( (el)=> {
        ans.push(parseInt(el));
        return ans
    })
}

//undefined

2. 막힌 부분의 해결

  • 정규식을 활용하여 문자를 모두 공백으로 만들어버린다음 숫자인 문자열만 남겼다. 그 뒤 반복문을 통해 숫자인 문자열의 각 인덱스 값을 정수로 파싱해준 뒤 더해 반환했다.

3. 내 풀이

function solution(my_string) {
    var try1 = my_string.replaceAll(/[abcdefghijklmnopqrstuvwxyz]/ig, '')
    var count = 0;
    for(let i=0; i<try1.length; i++){
        count += parseInt(try1[i])
    }
    return count
}

4. 다른 사람의 풀이 중 좋았던 코드 및 분석

function solution(my_string) {
    const answer = my_string.replace(/[^0-9]/g, '')
                            .split('')
                            .reduce((acc, curr) => acc + Number(curr), 0);
    return answer;
}
  • 나와는 다르게 숫자만 정규식으로 뽑아서 분리해준 뒤 reduce를 통해 각 배열의 값을 합쳐서 반환했다.
function solution(my_string) {
    return [...my_string].reduce((acc,cur)=>Number(cur) ? +acc + +cur : acc, 0)
}
  • 잘 모르겠다..

5. 새로 배운 것

  • 없음
profile
나는 나의 섬이다.

0개의 댓글