두 개의 숫자 m과 n을 인수로 받는 JavaScript 함수를 작성해야 합니다.
여기서 n은 항상 m이 가진 자릿수보다 작거나 같으며, 함수는 m의 첫 번째 자릿수부터 n번째 자릿수까지의 합을 계산하여 반환해야 합니다.
문제 이해하기
예를 들어 입력값이 다음과 같다고 가정해 보겠습니다.
const m = 5465767; const n = 4;
이 경우 기대되는 출력 결과는 다음과 같습니다.
const output = 20;
그 이유는 숫자 5465767의 앞 네 자리인 5, 4, 6, 5를 더하면 5 + 4 + 6 + 5 = 20이 되기 때문입니다.
구현 코드
다음은 위 문제를 해결하는 전체 코드입니다.
const m = 5465767;
const n = 4;
const digitSumUpto = (m, n) => {
// n이 m의 자릿수보다 크면 0 반환
if(n > String(m).length){
return 0;
};
let sum = 0;
// 앞에서부터 n개의 자릿수를 순회하며 합산
for(let i = 0; i < n; i++){
const el = +String(m)[i];
sum += el;
};
return sum;
};
console.log(digitSumUpto(m, n));코드 설명
이 코드의 동작 방식을 단계별로 살펴보겠습니다.
1. 유효성 검사: 먼저 n > String(m).length 조건으로 요청된 자릿수 개수(n)가 실제 숫자 m의 자릿수보다 큰지 확인합니다. 만약 초과한다면 유효하지 않은 요청이므로 0을 반환합니다.
2. 자릿수 변환: String(m)을 통해 숫자를 문자열로 변환한 뒤, 인덱스로 각 자릿수에 접근합니다. 이때 단항 더하기 연산자(+)를 사용해 문자열을 다시 숫자로 변환합니다.
3. 누적 합산: 반복문을 통해 앞에서부터 n개의 자릿수를 하나씩 꺼내 sum 변수에 누적합니다.
출력 결과
위 코드를 실행하면 콘솔에 다음과 같은 결과가 출력됩니다.
20