음이 아닌 정수가 하나 주어졌을 때, 해당 숫자의 각 자릿수를 독립적인 요소로 분리한 뒤 역순으로 담은 배열을 반환하는 함수를 작성해야 하는 문제입니다.
예시
입력값과 기대되는 출력 결과는 다음과 같습니다.
348597 => 올바른 결과는 [7, 9, 5, 8, 4, 3] 입니다.
해결 코드
const num = 348597;
const reverseArrify = num => {
const numArr = String(num).split('');
const reversed = [];
for(let i = numArr.length - 1; i >= 0; i--){
reversed[i] = +numArr.shift();
};
return reversed;
};
console.log(reverseArrify(num));실행 결과
[ 7, 9, 5, 8, 4, 3 ]
코드 동작 원리
이 함수가 어떻게 작동하는지 단계별로 살펴보겠습니다.
- 문자열 변환:
String(num)을 통해 숫자를 문자열로 변환한 후,split('')으로 한 글자씩 분리하여 문자 배열을 만듭니다. 예를 들어 348597은 ['3', '4', '8', '5', '9', '7']이 됩니다. - 역순 채우기: for 반복문을 배열의 마지막 인덱스부터 시작하여 거꾸로 순회합니다. 각 반복마다
shift()메서드로 배열의 첫 번째 요소를 제거하면서 꺼내고, 단항 더하기 연산자(+)를 사용해 문자를 숫자로 변환한 뒤 현재 인덱스에 저장합니다. - 결과 반환: 반복이 끝나면 원래 숫자의 자릿수가 역순으로 배치된 배열이 완성됩니다.
이처럼 문자열과 배열 메서드를 조합하면 별도의 수학적 연산 없이도 간단하게 숫자를 뒤집힌 자릿수 배열로 변환할 수 있습니다.