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

백승연·2023년 12월 19일
0

프로그래머스 - Lv. 0

목록 보기
23/60
post-thumbnail

🗒️ 문제

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


제한 사항

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

입출력 예

my_stringresult
"aAb1B2cC34oOp"10
"1a2b3c4d123"16

입출력 예 설명

입출력 예 #1

  • "aAb1B2cC34oOp"안의 한자리 자연수는 1, 2, 3, 4 입니다. 따라서 1 + 2 + 3 + 4 = 10 을 return합니다.

입출력 예 #2

  • "1a2b3c4d123Z"안의 한자리 자연수는 1, 2, 3, 4, 1, 2, 3 입니다. 따라서 1 + 2 + 3 + 4 + 1 + 2 + 3 = 16 을 return합니다.

유의사항

연속된 숫자도 각각 한 자리 숫자로 취급합니다.


🖋️ 나의 풀이

처음엔 for문으로 덧셈을 했다가 reduce도 써보자 해서 코드 변경

function solution(my_string) {
    // let result = 0;
    let arr = my_string.split("").map(Number).filter((el) => el);
    // for (let i = 0; i < arr.length; i++) {
    //     result += arr[i];
    // }
    // return result;

    let result = arr.reduce((a, b) => a + b)
    return result;
}

💡 다른 사람들의 풀이

# 1

정규식을 사용한 방법 (^)

function solution(my_string) {
    const answer = my_string.replace(/[^0-9]/g, '')
                            .split('')
                            .reduce((acc, curr) => acc + Number(curr), 0);
    return answer;
}

# 2

문자열 배열에 spread 연산자를 사용한 방법

function solution(my_string) {
    return [...my_string].reduce((acc,cur)=>Number(cur) ? +acc + +cur : acc, 0)
}

#3




📝 모르는 내용 찾아보기

profile
공부하는 벨로그

0개의 댓글