자료구조 및 알고리즘/JavaScript Practice

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

Ryomi 2023. 3. 21. 09:27
728x90
반응형

 

 

숨어있는 숫자의 덧셈(2)

문제설명

:문자열 my_string이 매개변수로 주어집니다. my_string은 소문자, 대문자, 자연수로만 구성되어 있습니다. my_string안의 자연수들의 합을 return하도록 solution 함수를 완성해 주세요.

 

제한 사항

  • 1 ≤ my_string의 길이 ≤ 1,000
  • 1 ≤ my_string 안의 자연수 ≤ 1000
  • 연속된 수는 하나의 숫자로 간주합니다.
  • 000123과 같이 0이 선행하는 경우는 없습니다.
  • 문자열에 자연수가 없는 경우 0을 return 해주세요.

 

입출력 예

my_string result
"aAb1B2cC34oOp" 37
'1a2b3c4d123Z'  

 

접근

: 문자열을 돌며 Number()를 사용해 숫자형으로 변경하여 str에 합쳐준다. 그럼 숫자가 아닌 요소들은 NaN을 반환하게 되므로 str에서 'NaN'을 기준으로 split 하면 반환된 배열에서 'NaN'이었던 부분은 빈 문자열로 대체될 것이다.

여기에 reduce()를 사용해 숫자 간 덧셈을 하였다. 

function solution(my_string) {
    let str = '';
    for(let i of my_string){
        str += Number(i)
    }
    let answer = str.split('NaN')
    
    return answer.filter(el => el !== '').reduce((acc, cur) => Number(acc) + Number(cur), 0)
}

 

solution

function solution(my_string) {
  return my_string.split(/\D+/).reduce((acc, cur) => acc + Number(cur), 0);
}

 

// 상위 랭킹된 풀이들이 정규표현식을 사용했다.

// 하지만, 정규표현식을 사용하지 않고도 문제는 풀 수 있고 이는 알고리즘 문제 해결 시 사고의 확장에 도움이 되므로 정규표현식은 나중에 공부하자. 

728x90
반응형