숨어있는 숫자의 덧셈 (1) 문제 링크
숨어있는 숫자의 덧셈 (2) 문제 링크
두 문제 다 주어진 매개변수 my_string
에 숨어있는 자연수들의 합을 return 하는 함수를 완성하라는 문제이다. 다만 1과 2의 차이점이 있는데...
(1)의 경우 my_string
은 소문자, 대문자 그리고 한자리 자연수
로만 구성되어있다는 제한사항이 있다.
(2)의 경우는 숫자가 연속으로 있는 경우 그것을 하나의 숫자로 간주한다. ( 1 ≤ my_string 안의 자연수 ≤ 1000 )
1 ≤ my_string의 길이 ≤ 1,000
isNaN()
: 이 함수는 어떤 값이 NaN 값인지 판단하는데, 매개변수가 숫자가 아니면 true
, 숫자이면 false
를 반환하는 특징이 있다. Number()
을 이용해 변환한 뒤 모조리 합하는 방법으로 알고리즘을 설계했다.// 숨어있는 숫자의 덧셈 (1)
function solution(my_string) {
let answer = 0;
my_string.split("").map(e => !isNaN(e)? answer += Number(e) : 0)
return answer;
}
// 숨어있는 숫자의 덧셈 (2)
function solution(my_string) {
// 1. 정규표현식을 사용해서 my_string의 숫자 부분을 발라낸다.
// my_string이 "aAb1B2cC34oOp" 이라면 nums = [ '1', '2', '34' ]
const nums = my_string.match(/[0-9]+/g);
// 2. map()을 이용해서 nums 배열의 요소를 전부 string형태에서 number 형태로 바꾼다.
// 3. reduce()를 이용하여 배열의 요소를 더하여 반환한다.
return nums ? nums
.map(num => Number(num))
.reduce( (a, c) => a + c, 0)
: 0;
안녕하세요 잘 보았습니당
혹시 .reduce( (a, c) => a + c, 0) 여기서 초기값 0을 세팅하신 이유가 뭔지 알 수 있을까요?