231121 TIL

chillakilla·2023년 11월 22일

자연수 뒤집어 배열로 만들기

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

입출력 예

솔루션 코드

<script>
function solution(n) {
  let answer = 0;
  let arr = n.toString().split("").map(Number);
  answer = arr.reverse();
  return answer;
}

console.log(solution(12345));

</script>
  • Lv0에서 Lv1의 문제가 되었지만, 잘보면 뭔가 익숙한 문제다.
  • 봐야할 포인트는 자연수 n, 뒤집기, 배열 형태로 리턴, 이 3가지라 판단했다.
  • 그 판단은 입출력 예를 보고서는 더욱 확신으로 굳었다.
  • 머릿속으로 해야할 걸 정리해보면, 일단은 입력받은 자연수 n을 문자열로 변환시켜야한다.
  • 그래야 문자열로 변환된 n 을 각각 쪼개서 다시 숫자로 만든 뒤에 거꾸로 뒤집을 수 있을 테니.
    -그래서 나온 코드가 위에 적혀진 코드다.
  • toString을 통해 문자열로 변환, split을 통해 쪼개기, map(Number)를 통해 다시 숫자로 변환된 배열로 만든다.
  • 그리고 그렇게 나온 arr 를 reverse 메소드를 통해 배열을 거꾸로 뒤집어준다.

  • 6점이라니 뭔가 기분이 좋다

다른 사람의 풀이

<script>
function solution(n) {
    return n.toString().split('').reverse().map(o => o = parseInt(o));
}
</script>

내 코드를 리팩토링하고 parseInt를 사용하면 이 형태가 나오지 않을까 싶다.

<script>
function solution(n) {
    var answer = [];
    n = n + "";
    for (var i = n.length - 1; i >= 0; i--) {
        answer.push(Number(n[i]));
    }
    re
</script>

이건 너무나도 친숙한 for 문을 사용한 솔루션이다.
그나저나 n + ""; 이런 식이 먹힌다는 걸 알게 되는 계기 같다...

확실히 문제풀이를 진행하고, 여러 솔루션을 만들어보는 것도 도움이 되지만, 다른 사람들의 풀이를 보는 것도 공부가 된다.

이래서 다른 사람의 코드를 봐라, 라는 말이 많이 나오는구나..

profile
꾸준하려 하는 쉽덕놈

0개의 댓글