항해 프로그래머스

(해설있음)항해3주차 자바스크립트 프로그래머스 - 자연수 뒤집어 배열로 만들기

완두노예 2023. 1. 30. 19:43

등록한 풀이

function solution(n) {
  // 들어온 자연수를 문자열로 변환하고 12345 -> "12345"
  // 변환된 문자열을 배열로 만들어준다. "12345" -> ["1", "2", "3", "4", "5"]
  const strArr = n.toString().split("");

  // 배열을 뒤집어준다. ["1", "2", "3", "4", "5"] -> ["5", "4", "3", "2", "1"]
  const reverseArr = strArr.reverse();

  // 배열안의 각 문자 값을 숫자로 변형시켜 주고 반환해준다.
  // ["5", "4", "3", "2", "1"] -> [5, 4, 3, 2, 1]
  return reverseArr.map((n) => parseInt(n, 10));
}

console.log(solution(12345)); // [5, 4, 3, 2, 1]

다른 풀이

function solution(n) {
    var arr = n.toString().split('');
    var answer = [];

    for(var i=arr.length-1; i>=0; i--){
        answer.push(Number(arr[i]));
    }

    return answer;
}

Q 왜 toString을 썼을까. split를 안쓰면 12345를 '만이천삼백사십오' 로 받아들이게 되는건가?

A 상단 코드 보고 이해함. 왜 문자열로 바꾸었는지도!

Q for 문 왜 i=arr.length-1 '에서 -1'은 뭘까, i--이거는 그 뭐라고하더라

A

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;
}
function solution(n) {
    return (n + '').split('').reverse().map(n => parseInt(n));
}
function solution(n) {
    var answer = [];
    n = n + "";
    for (var i = n.length - 1; i >= 0; i--) {
        answer.push(Number(n[i]));
    }
    return answer;
}
function solution(n) {
    // 문자풀이
    return (n+"").split("").reverse().map(v => parseInt(v));

    // 숫자풀이

}
function solution(n) {
    return (n+"").split("").reverse().map($=>+$);
}
function solution(n) {
    let answer = (n + '').split('').reverse();
    return answer.map(item => parseInt(item));
}
function solution(n) {
    var nStr = n.toString();
    var answer = [];
    for( let i = nStr.length-1; i >= 0; i-- ) {
      answer.push(Number(nStr[i]));
    }
    return answer;
}
function solution(n) {
    var answer = [];

    n += '';

    for (var i = n.length - 1; i >= 0; i--) {
        answer.push(+n[i]);
    }

    return answer;
}