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
반응형
'자료구조 및 알고리즘 > JavaScript Practice' 카테고리의 다른 글
JS Practice) 프로그래머스 : 영어가 싫어요 (0) | 2023.03.23 |
---|---|
JS Practice) 프로그래머스 : 한 번만 등장한 문자 (0) | 2023.03.22 |
JS Practice) 프로그래머스 : 이진수 더하기 (0) | 2023.03.20 |
JS Practice) 프로그래머스 : 진료 순서 정하기 (0) | 2023.03.17 |
JS Practice) 프로그래머스 : 팩토리얼 (1) | 2023.03.16 |