Dragonball Online Goku Hand
본문 바로가기
알고리즘 도장깨기

프로그래머스 Lv.1 "자연수 뒤집어 배열로 만들기"

by 별의 코비 2022. 11. 1.
728x90

🔥 Programmers Lv.1 : 자연수 뒤집어 배열로 만들기


🔍 문제 : " 자연수 n을 뒤집어 각 자리 숫자를 원소로 가지는 배열 형태로 리턴해주세요. 예를들어 n이 12345이면 [5,4,3,2,1]을 리턴합니다. "

📎 조건 :
∙ n은 10,000,000,000이하인 자연수입니다.


👉🏻 My answer

function solution(n) {
    let answer =[];
    let arr = String(n).split("").reverse();
    for (let i = 0; i < arr.length; i++) {	
        answer.push(Number(arr[i]));
    }
     return answer;
}
01. [5,4,3,2,1]이 나오게 하기 위해서 배열로 바꾼 뒤 숫자를 문자열로 변화하여 split메서드를 통해 나누어줍니다.
02. 12345에서 ["1","2","3","4","5"]가 되며 역으로 배열되어야 하므로 reverse메서드를 통해 배열을 역방향으로 바꿔줍니다.
03. for문을 돌려 배열 길이만큼 반복할 때 push를 통해 숫자로 변환한 arr배열의 값을 answer값에 넣어줍니다.


👉🏻 Another ways

function solution(n) {
    // 문자풀이
    // return (n+"").split("").reverse().map(v => parseInt(v));

    // 숫자풀이
    var arr = [];

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

    return arr;
}
: 이게 바로 발상의 전환인가 hoxy...
: 10으로 나누어 소수점을 만들어 소수점 뒤에 값을 배열로 가져오는 방식입니다.
: 즉, 10으로 값을 나누어 소수점 뒷자리는 배열에 넣고 버림으로써 결국 뒤부터 배열에 넣는 셈이 되니 revers()메서드와 같습니다.
function solution(n) {
    return n.toString().split('').reverse().map(o => o = parseInt(o));
}
: 깔끔 그 잡채~

댓글