728x90
문제 설명
자연수 n을 뒤집어 각 자리 숫자를 원소로 가지는 배열 형태로 리턴해주세요. 예를들어 n이 12345이면 [5,4,3,2,1]을 리턴합니다.
제한 조건
- n은 10,000,000,000이하인 자연수입니다.
입출력 예시
나의 풀이
function solution(n) {
var a = n.toString().split('');
return a.map((e,i)=> Number(a[a.length-(i+1)]))
}
입력값을 split하기위해 문자열로 만들고 전체를 split했다.
a를 맵핑해 a배열의 각 요소가 {배열의 총 길이-(현재인덱스값+1)}의 인덱스를 가지게 했고 (=역순으로 만들기)
문자열을 숫자로 바꿨다.
모범 답안 1)
return (n+"").split("").reverse().map(v => parseInt(v));
문자열로만들고 스플릿 한 뒤에 reverse시키고 숫자로바꾸기위해 맵핑했다.
초 간단;
모범 답안 2)
var arr = [];
do {
arr.push(n%10);
n = Math.floor(n/10);
} while (n>0);
return arr;
123을 10으로 나눈 나머지가 배열에 들어간다. [3]
n은 123을 10으로 나눈 몫이 들어간다. n=12
12>0 이므로 do 재실행
12를 10으로 나눈 나머지가 배열에 들어간다.[3,2]
n은 12를 10으로 나눈 몫이 들어간다. n=1
1>0 이므로 do 재실행
1을 10으로 나눈 나머지가 배열에 들어간다. [3,2,1]
n은 1을 10으로 나눈 몫이 들어간다. n=0
0=0 이므로 do while 종료
리턴되는 배열은 [3,2,1]
!! 이 방법이 문자열로 바꾸고 하는 등의 풀이보다 연산속도가 빠르다.
do...while
do{구문}
while (조건)
1) 구문을 실행시킨다. 2) 조건이 참이면 구문을 다시 실행시킨다.
Math.floor()
주어진 숫자와 같거나 작은 정수 중에서 가장 큰 수를 반환한다.
ex) Math.floor(123.456) == 123
Math.floor(123) == 123
Math.floor(-123.456) == -124
cf) Math.floor(null) == 0
'알고리즘' 카테고리의 다른 글
25. 정수 제곱근 판별 (JavaScript) (0) | 2022.01.18 |
---|---|
24. 정수 내림차순으로 배치하기 (JavaScript) (0) | 2022.01.18 |
22. 자릿수 더하기 (JavaScript) (0) | 2022.01.18 |
20. 완주하지 못한 선수 (1) | 2022.01.18 |
21. 이상한 문자 만들기 (JavaScript) (0) | 2022.01.17 |
댓글