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

호박이와 칼림바·2023년 9월 10일
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합니다.

🔻 유의사항

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


💎 나의 풀이


function solution(my_string) {
    let answer = 0;
    for(let i = 0; i < my_string.length; i++)
        if(my_string[i] < 10)
            answer += +my_string[i];
    return answer;
}

for문으로 문자열을 돌리면서 0~9까지의 수가 존재할 경우, 그 해당 인덱스의 값을 숫자로 변환('+'기호)하여 answer 변수에 더해준다.

💡 다른 사람의 풀이(reduce 함수)

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

spread 문법을 사용하여 문자열을 하나하나 펼쳐준 후, 차례대로 요소가 숫자일 때 acc에 그 요소를 더해준 것이다.
'+acc + +cur'은 acc와 cur을 정수화 시킨 후에 더하는 형태이다.

한 줄 코드로 바꾸면 아래와 같다.

let solution = (my_string) => [...my_string].reduce((acc,cur) => Number(cur) ? +acc + +cur : acc, 0)
profile
프론트엔드 개발자입니다.

0개의 댓글