반응형
Notice
Recent Posts
Archives
Today
Total
Link
관리 메뉴

꾸준하게

[JS코딩테스트] 자연수 뒤집어 배열로 만들기 본문

JS코딩테스트

[JS코딩테스트] 자연수 뒤집어 배열로 만들기

DaeunCoding 2023. 4. 9. 19:06
728x90
반응형

https://school.programmers.co.kr/learn/courses/30/lessons/12932

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

[나의 풀이]

function solution(n) {
    //1. 자연수n을 배열로 만들어주기
    let array = (n+'').split('').map(x => Number(x));
    //2. 배열 순서 뒤집기(reverse)
    let reverse = array.reverse();
    return reverse;
}

아직 Lv1이지만, 거의 매일같이 문제 하나씩 풀어보고 있는데,

갈수록 비슷한 문법을 활용하다 보니, 슬슬 풀이 방법이 익숙해지고 있다.

 

https://semoal24.tistory.com/44

 

[JS] Array - 배열 관련 정리

length Array.length; 배열의 길이 reduce Array.reduce((acc, curr) => 함수식, in) acc : 이전 curr을 함수식에 대입하여 받아낸 값. curr : 현재 input할 값. in : acc의 초기값 ex. 배열의 모든 요소를 더한 값 array.reduce((

semoal24.tistory.com

방금 푼 방법의 문법은 따로 정리해두었다.

 

[다른 풀이]

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

이 분은 문자풀이 방식과 숫자풀이 방식 두 가지로 풀었다.

문자풀이 방식은 내 방식과 유사한데, reverse를 map 앞에 두어 한 줄로 깔끔하게 풀어내었다.

그리고 문자배열을 숫자배열로 바꾸는 방식을 Number()가 아닌 parseInt()를 활용하였다.

 

그럼, 숫자풀이를 확인해보자.

//1. 빈 배열 선언
let arr = [];

do {
    //2. 빈 배열에 1의 자리 수 추가 ( 12345%10 = 5이므로 )
    arr.push(n%10);
    //3. n의 1의 자리를 없애기 ( 12345 / 10 = 1234.5이고 이 수보다 같거나 작은 최대 정수 1234 )
    n = Math.floor(n/10);
    //4. n이 1의 자리가 될 때까지 반복
} while (n>0);

return arr;

* do ... while

do 함수 while 조건

조건이 false가 될 때까지 함수를 반복한다.

 

* math.floor(n)

숫자n보다 작거나 같은 정수 중 가장 큰 정수

728x90
반응형