[Lv 1] 자연수 뒤집어 배열로 만들기 by JS
📄 문제
자연수 n을 뒤집어 각 자리 숫자를 원소로 가지는 배열 형태로 리턴해주세요. 예를들어 n이 12345이면 [5,4,3,2,1]을 리턴합니다.
- n은 10,000,000,000이하인 자연수입니다.
🙋♀️ 나의 풀이
function solution(n) {
const numToArr = [...String(n)].reverse(); // 1
let answer = [];
for (let i = 0; i < numToArr.length; i++) {
answer.push(Number(numToArr[i])); // 2
}
return answer;
}
- 주어진 숫자를 문자열로 바꿔 하나하나 배열의 요소로 만들어준 후 순서를 바꾼다.
answer
에numToArr
의 요소를 숫자로 바꿔 삽입해준다.
뭔가 한줄짜리 코드로 바꿀 수 있을 것 같은데 깔끔하게 답이 나오지 않아 이렇게 제출했습니다.
👍 Best Practice 1
function solution(n) {
return (n + "")
.split("")
.reverse()
.map((n) => parseInt(n));
}
역시 한줄짜리 답안이 있네요.
아직 배열 내장 메소드를 쓰는 것이 그렇게 익숙하지 않은듯 합니다.
그런데 왜 숫자 뒤에 공백을 붙이고 split(““)을 하면 문자열로 하나하나 쪼개질까요.
열심히 이리저리 콘솔을 찍어본 결과 숫자 뒤에 공백(““)을 붙이면 문자열이 되기 때문이었습니다.
제가 했던 [...String(n)]
과 같은 과정이네요.
👍 Best Practice 2
function solution(n) {
var arr = [];
do {
arr.push(n % 10); // 1
n = Math.floor(n / 10); // 2
} while (n > 0); // 3
return arr;
}
- 주어진 자연수를 10으로 나누어 소수점 한자리를 나오게해 그 값을
arr
에 넣어준다. - 뒤에 소수점을 하나 떨궈내고 자릿수를 하나 줄인다.
- n이 0이 될때까지 반복한다.
세상은 이런 분들이 바꿔가는걸까요.
저는 어떻게든 배열 메소드를 쓰려고 했는데 이런 멋진 방법이 있습니다.
문제 출처
- 프로그래머스
Leave a comment