[프로그래머스] 자연수 뒤집어 배열로 만들기 in JavaScript

hyocho·2022년 6월 17일
0

코딩테스트

목록 보기
13/45


2022년 7월 5일 내용 수정 / 추가

✅문제

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

  • 제한 조건
    n은 10,000,000,000이하인 자연수입니다.

✍문제풀이

  • 자연수 n 을 입력받아 문자열로 형 변환
  • split() 으로 각 자리수를 원소로 가지는 배열로 변환
  • reverse() 로 정렬 순서 반대로 바꾸기
    1.실패한 코드
function solution(n) {
  let answer = ((n+" ").split()).reverse();
  return answer;
}
// 여기서 다시 문자열 > 배열 로 넣어줘야 했는데 생각하지 못했음..
function solution(n) {
  let answer = [];
  let arr = (n + '').split('');

  for (let i = arr.length - 1; i == 0; i--) {
    answer.push(Number.arr[i]);
  }
  return answer;
}
//i==0까지 반복하여 arr[0]까지 돌아줘야 한다고 생각했는데 계속 오류가 났다.
//Number(str) 의 문법인데 자꾸 Number.str이라고 실수를 하고있다..
  1. 성공한 코드
function solution(n) {
    var arr = n.toString().split('');
  // n을 string으로 형변환하고 split으로 하나씩 끊어줌.
    var answer = [];

    for(var i=arr.length-1; i>=0; i--){
        answer.push(Number(arr[i]));
    }
  //arr의 인덱스 역순으로 answer의 배열 안에 넣어준다.
  return answer;
}

✔️참고할 좋은 코드

function solution(n) {
    return n.toString().split('').reverse().map(o => o = parseInt(o));
}
//map() 메소드로 i => parseInt(i) 를 사용하여 모든 요소들을 정수로 다시 변환합니다.
function solution(n) {
    return String(n).split('').reverse().map(Number)
}
const solution = (n) => n.toString().split("").map((str) => Number(str)).reverse();

들어오는 숫자를 toString으로 문자로 변환하고 split으로 배열로 변환 다음 map을 돌면서 배열의 요소들을 하나씩 Number로 숫자 변환을 한다. 다음에는 reverse을 이용해 배열을 뒤집는다

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;
}

📝TIL

  • string.charAt([index])
  • array.from

문제 출처 : https://programmers.co.kr/learn/courses/30/lessons/12932
참고 사이트 :
1. https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=diceworld&logNo=220238851183
2. https://unabated.tistory.com/entry/%EC%9E%90%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8-charAt-indexOf-substring%EC%9D%98-%EC%B0%A8%EC%9D%B4%EC%A0%90
3. https://velog.io/@teihong93/Array.from%EC%9D%84-%ED%86%B5%ED%95%9C-%EB%B0%B0%EC%97%B4%EC%9D%98-%EC%B4%88%EA%B8%B0%ED%99%94

profile
기록하는 습관을 기르고 있습니다.

0개의 댓글