문제 상황
정수들이 공백으로 구분되어 들어 있는 문자열을 입력으로 받는 JavaScript 함수를 작성해야 합니다.
이 함수의 역할은 문자열 안에 있는 각 정수를 실제 숫자로 변환한 뒤, 그 합계를 계산하여 반환하는 것입니다.
해결 접근 방법
이 문제는 다음 세 단계로 해결할 수 있습니다.
1. split() 메서드로 문자열을 공백 기준으로 나누어 배열을 만듭니다.
2. map(Number)를 사용해 배열의 각 요소를 숫자 타입으로 변환합니다.
3. reduce() 메서드로 배열의 모든 값을 더해 합계를 구합니다.
코드 예제
다음은 전체 구현 코드입니다.
const str = '1 5 12 76 2';
const sumStringNumbers = (str = '') => {
const findSum = (arr = []) => {
const sum = arr.reduce((acc, val) => acc + val);
return sum;
};
let sum = 0;
const arr = str
.split(' ')
.map(Number);
sum = findSum(arr);
return sum;
};
console.log(sumStringNumbers(str));
출력 결과
96
코드 설명
문자열 '1 5 12 76 2'는 split(' ')에 의해 ['1', '5', '12', '76', '2']라는 문자열 배열로 변환됩니다. 이후 map(Number)가 각 문자열을 숫자로 바꾸고, 마지막으로 reduce()가 누적합을 계산합니다.
1 + 5 + 12 + 76 + 2 = 96이므로 최종 결과로 96이 출력됩니다.
참고로, 이 로직은 한 줄로도 간결하게 표현할 수 있습니다.
const sumStringNumbers = str => str.split(' ').map(Number).reduce((a, b) => a + b, 0);두 번째 인수 0을 초기값으로 지정하면 빈 문자열이 들어와도 오류 없이 0을 반환하므로 더욱 안전한 코드가 됩니다.