Programmers/Level 1

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

emayom 2021. 7. 3. 18:09

[Javascript] 프로그래머스 Level1 _ 자연수 뒤집어 배열로 만들기

 

👇🏻

Link_Click

 

 

👇🏻

시행착오

( + 코드를 작성하면서든 생각들.)


1.

(15.4점이 나온 기적의 코드,,, 🤗)

최근에 비슷한 문제들이 많아서 풀던대로 풀었더니 통과는 되지만 테스트에서 제출이 안된다!!

처음엔 map() 함수 자체가 너무 어려워서 시도도 못해봤는데 ,, 이제는 좀 익숙해졌다고 한 번 써봤다...ㅎ

function solution(n) {
    var answer = n.toString().split('')
        answer.sort((a,b) => b-a);
    
   return answer.map(el => parseInt(el));
} 

2.

이번에는 반복문으로 풀었다.

숫자를 문자열로 변환한 후, 빈 배열에 문자열의 값을 뒤에서부터 대입했다.

그리고 반복문 내에서 정수로 변환한 후 배열을 리턴했다!

이렇게하면 통과가 된다.

function solution(n) {
    var answer = [];
    n = n.toString();
    
    for(let i=0; i<n.length; i++){
        answer[i] = parseInt(n[(n.length-1)-i]);
    }
    
    return answer;
} 

3.

이번에는 toString() 대신 숫자 + "" 을 통해서 문자열을 만들어보려고 한다.

function solution(n) {
    var answer = [];
    n = (n+"").split("").reverse();
    
    for(let i=0; i<n.length; i++){
        answer[i] = parseInt(n[i]);
    }
    return answer;
}

4. 

첫번째와 .sort()를 제외하고 모두 같은데 reverse()를 사용했더니 이건 통과가 된다. 이유가 뭐지?

function solution(n) {
//return (n+"").split("").reverse().map(el => parseInt(el));
    
    var answer = n.toString().split('')
                  .reverse()
                  .map(el => parseInt(el));
   return answer;
}

4.
정말 다른 분들의 풀이를 볼 때마다 탐난다....! 

다들 어떻게 그런 생각을 하시는건지ㅎㅎㅎㅎ 그래서 하나 가져왔다.

 

문자열로 변환하지 않고 숫자 그대로 풀이하셨다.

%10 을 통해 나머지를 배열에 대입하고 10으로 나누고 Math.floor()를 통해 정수로 만들기를 반복하면서 계속해서 배열에 추가했다.

function solution(n) {
    var answer = [];

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

    return answer;
}

 

⚠️ 아래 내용은 모두 개인적인 참고 / 기록을 위한 용도 입니다. 참고해주시고 편안하게 봐주세요 :)  ⚠️

***    혹시라도 잘못된 정보가 있다면  언제든지 알려주시면 감사하겠습니다  !    ***