알고리즘/문제를 풀어보쟈

자연수를 뒤집어 배열로 만들어보자

섕걍 2022. 3. 13. 14:47

문제해결에 for문을 최대한 안쓰는 방향으로 생각해야하는데

한 번 더 생각해봅시당~..


문제해결

function solution(n) {
    const answer = [];
    const strArray = [...n.toString()].reverse();
   for (const item of  strArray){
         answer.push(+item);
   }
    return answer;
}

 

1. n정수를 받아와 [] 배열에 담아준다. 이때 toString()을 사용해 타입변환을 해준다.

2. 그리고 reverse()를 이용해 배열은 뒤집어준다.

3. for of문을 써서 strArray를 하나씩 가져와 answer배열에 push해준다.

4. 이때 하나씩 가져온 item은 string타입이므로 +를 붙여 number로 타입변환을 해준다.

 


개선점

1. 타입변환을 하지 않는 쪽으로 생각해야한다. 캐스팅 런타임 비용때문

function solution(n) {
    const answer = [];
	do{
    	answer.push(n%10);
        n = Math.floor(n/10);
    }
    while (n>0);
    
    return answer;
}

// 받아온 숫자 n을 10으로 나눈 나머지를 answer배열에 푸쉬해준다.
// 다시 n을 10으로 나눈 몫을 Math.floor를 해준다.(소수점 이하는 버림)
// n이 0보다 크다면 do{} 를 반복한다

2. for문을 지양한다.

function solution(n) {
    return n.toString().split("").reverse().map(s=>(+s))
}