[js] 숨어있는 숫자의 덧셈(1) (lv.0, 정답률 89%)

sookyoung.k·2024년 5월 17일
0
post-thumbnail

문자열 my_string이 매개변수로 주어집니다. my_string안의 모든 자연수들의 합을 return하도록 solution 함수를 완성해주세요.

제한사항

  • 1 ≤ my_string의 길이 ≤ 1,000
  • my_string은 소문자, 대문자 그리고 한자리 자연수로만 구성되어있습니다.

나의 풀이

function solution(my_string) {
    return [...my_string]
        .filter((v) => !isNaN(v))
        .reduce((acc, cur) => {
            return (acc += +cur);
        }, 0);
}
  • 스프레드 연산자로 문자열을 배열로 풀어준 뒤에 filter()를 사용했다. 이 때 숫자를 판별하기 위해서 이전 문제에서 배운 isNaN()를 활용해서 숫자가 아닌 것들을 걸러냈다.
  • reduce()로 누적 합산값을 구함. cur 부분에서 숫자로 변환해줌

다른 풀이 1

function solution(my_string) {
    const answer = my_string.replace(/[^0-9]/g, '')
                            .split('')
                            .reduce((acc, curr) => acc + Number(curr), 0);
    return answer;
}
  • 여기서는 정규표현식을 사용해서 숫자가 아닌 모든 문자를 제거한다. ^는 부정을 의미한다.

다른 풀이 2

function solution(my_string) {
    return [...my_string].reduce((acc,cur)=>Number(cur) ? +acc + +cur : acc, 0)
}
  • 스프레드 연산자를 통해서 문자열을 풀어헤친 담에 그걸 reduce()로 깔끔하게 처리...! cur이 Number일 경우 acc, cur을 더하고 아닐 경우 cur만 반환
profile
영차영차 😎

0개의 댓글