TIL-20230525

민태영·2023년 5월 23일
0

문제) 자연수 n을 뒤집어 각 자리 숫자를 원소로 가지는 배열 형태로 리턴해주세요.

나의 풀이

function solution(n) {
    let answer = []
    let arr = []
    // 먼저 split함수로 받아온 자연수를 string타입으로 변환하여 
    // arr배열에 하나씩 할당한다.    
    arr = (n + "").split("")
    // reduce함수로 arr배열에 있는 값들을
    // answer배열에 unshift로 앞으로 넣어준다.      
    arr.reduce((acc, curr) => {
        answer.unshift(parseInt(curr))
    }, 0)
    return answer   
}
문제점:

받아온 n을 문자열로 바꿔 배열에 하나하나 넣는 방법을 떠올렸을 때 for문이 제일 먼저 생각이 나서 다른 방법을 모색하였다.

해결:

split함수로 1줄로 해결할 수 있었다.

다른 사람의 풀이

function solution(n) {
    // 숫자풀이
    var arr = [];

    do {
        arr.push(n%10);
        n = Math.floor(n/10);
    } while (n>0);

    return arr;
}

이분은 수학적인 방법은 풀어서 재밌어서 가져왔다.
먼저 do안에 있는 arr.push(n%10)로 5가 arr로 들어가고
n은 Math.floor(n/10)로 n을 10으로 나누고 소수값을 없애면서 n을 0까지 줄여나가면서 n % 10의 나머지값을 arr배열에 push로 넣어준다.

profile
꿈을 꾸는 개발자

0개의 댓글