2022. 9. 26. 06:25ㆍ기록/Programmers
- 목차
문제 설명
자연수 n을 뒤집어 각 자리 숫자를 원소로 가지는 배열 형태로 리턴해주세요.
예를들어 n이 12345이면 [5,4,3,2,1]을 리턴합니다.
제한 조건
- n은 10,000,000,000이하인 자연수입니다.
입출력 예
n | return |
12345 | [5, 4, 3, 2, 1] |
나의 문제 풀이
function solution(n) {
let answer = n.toString().split("").reverse().map((num) => parseInt(num));
return answer;
}
먼저 toString 메소드를 통해 주어진 자연수 n을 문자열로 변환하고, split 함수를 사용해 문자열을 배열의 원소로 쪼개었다.
그 후 reverse 함수를 사용해 배열의 순서를 거꾸로 뒤집었다.
여기서 배열의 원소들의 데이터 타입은 문자이기 때문에, map 으로 하나씩 꺼내서 parseInt 로 숫자로 바꾸어 리턴해 주었다.
다른 사람의 문제 풀이
function solution(n) {
var arr = [];
do {
arr.push(n % 10);
n = Math.floor(n / 10);
} while (n > 0);
return arr;
}
지난 번에 자릿수 더하기에서 보았던 로직과 비슷하다.
주어진 수를 문자로 변환하지 않고 숫자 그대로 나머지 값을 이용해서 푼 코드이다.
do ~ while 조건문을 사용하여 처음에는 주어진 수가 0 보다 큰지 체크하지 않는다.
arr.push(n % 10) 를 통해서 가장 마지막 자리의 숫자를 배열의 끝에 넣어준다.
Math.floor(n / 10) 을 통해서 주어진 수에서 가장 마지막 자리 수를 삭제하고 난 후
0 보다 크다면 반복문을 계속해서 실행하면서 마지막 자리의 숫자를 하나씩 배열에 넣어주게 된다.
배열에는 마지막 자리의 숫자부터 넣어주기 때문에 자동으로 순서가 거꾸로가 될 수 있다.
배열의 끝에서 부터 요소를 넣어주는 push() 가 아니라 , 배열의 앞에서 부터 요소를 넣어주는 unshift() 를 사용하면
주어진 수를 순서대로 배열의 원소로 만들 경우에 적용할 수 있겠다는 생각이 들었다.
배열에 관련된 함수는 매우 많기 때문에, 잘 정리해 두고 문제해결에 적용할 수 있도록 해야겠다.