문제 소개
숫자 하나를 인자로 받는 JavaScript 함수를 작성해야 합니다. 이 함수는 주어진 숫자를 첫 번째 자릿수부터 마지막 자릿수까지 한 단계씩 잘라낸 문자열들을 요소로 담은 배열을 반환해야 합니다.
예를 들어 입력값이 246이라면, 함수는 다음과 같은 배열을 반환해야 합니다.
[ '2', '24', '246' ]
즉, 첫 번째 자릿수까지만 남긴 값, 두 번째 자릿수까지 남긴 값, 세 번째 자릿수(전체)까지의 값이 순서대로 배열에 저장되는 방식입니다.
해결 코드
다음은 이 문제를 해결하는 전체 코드입니다 −
const num = 246;
const cutOffEach = (num = 1) => {
const str = String(num);
const res = [];
let temp = '';
for(let i = 0; i < str.length; i++){
const el = str[i];
temp += el;
res.push(temp);
};
return res;
};
console.log(cutOffEach(num));
코드 동작 원리
- 문자열 변환:
String(num)을 사용해 숫자를 문자열로 바꾸면, 각 자릿수에 인덱스로 접근할 수 있습니다. - 누적 변수: 빈 문자열
temp를 선언하고, 반복문 안에서 현재 자릿수를 계속 이어 붙입니다. - 결과 저장: 매 반복마다 누적된
temp값을push()로 배열res에 추가합니다. - 반환: 모든 자릿수를 처리한 후 완성된 배열을 반환합니다.
이 방식은 시간 복잡도가 O(n)으로, 숫자의 자릿수 길이에 비례하여 한 번의 순회만으로 결과를 얻을 수 있어 효율적입니다.
출력 결과
위 코드를 실행했을 때 콘솔 출력은 다음과 같습니다 −
[ '2', '24', '246' ]