본문 바로가기
알고리즘

23. 자연수 뒤집어 배열로 만들기 (JavaScript)

by 프잘백 2022. 1. 18.
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

댓글