https://programmers.co.kr/learn/courses/30/lessons/12932
let n = 12345;
const solution1 = (n) => n.toString().split('').map((str)=>Number(str)).reverse();
console.log(solution1(n)); // [5, 4, 3, 2, 1]
- toString() 메서드로 숫자형을 문자형으로 바꾸어준다.
- split() 메서드로 문자형을 나누어 배열에 담는다.
- map() 메서드로 개별로 나누어진 문자형들을 돌면서 숫자형으로 바꾸어준다.
- reverse() 메서드로 배열의 순서를 반전한다.
let n = 12345;
function solution2(n) {
let answer = [];
do {
answer.push(n%10);
n = Math.floor(n/10);
} while (n>0);
return answer;
}
console.log(solution2(n)); // [5, 4, 3, 2, 1]
- arr변수에 빈 배열을 할당한다.
- do-while문을 활용한다. 이 때 조건은 n>0일 때 까지만 반복한다.
- push()메서드를 활용하는데 n%10 나머지 값을 넣어준다.
(사이클 순서대로 5(12345를 10으로 나눈 나머지 값) -> 4(1234를 10으로 나눈 나머지값) -> 3(123을 10으로 나눈 나머지값) -> 2(12를 10으로 나눈 나머지 값) -> 1(1을 10으로 나눈 나머지 값))- n변수에 Math.floor()을 활용하여 값을 할당하는데 n/10을 매개변수로 하여 소수점 자리를 버린 수를 할당한다.
(사이클 순서대로 1234(1234.5의 소수점 버린 수) -> 123(123.4의 소수점 버린 수) -> 12(12.3의 소수점 버린 수) -> 1(1.2의 소수점 버린 수) -> 0(0.1의 소수점 버린 수))- 값이 할당된 변수 answer 출력한다.
let n = 12345;
function solution3(n) {
let nStr = n.toString();
let answer = [];
for(let i = nStr.length-1; i >= 0; i--) {
answer.push(Number(nStr[i]));
}
return answer;
}
console.log(solution3(n)); // [5, 4, 3, 2, 1]
- toString() 메서드로 숫자형을 문자형으로 바꾸어 nStr변수에 할당한다.
- answer변수에 빈 배열을 할당한다.
- for반복문을 활용하는데 순서를 반전해야하므로 nStr의 변수 length -1부터 반복문을 시작하며 i가 0보다 크거나 같을 경우 반복하여 실행한다. 또한 index값이 줄어야하므로 증감연산자 i-- 를 활용하여 i값을 감소시킨다.
- 반복문안에 push() 메서드로 반전한 문자열을 answer변수에 순차적으로 할당하는데 Number()함수를 활용하여 숫자형으로 바꾸어 할당한다.
- 값이 할당된 변수 answer를 출력한다.