[자바스크립트 알고리즘] 정수인 숫자를 인자로 받아, 숫자의 순서를 뒤집어서 return하기

1. 문제

reverse 함수에 정수인 숫자를 인자로 받습니다.
그 숫자를 뒤집어서 return해주세요.

x: 숫자
return: 뒤집어진 숫자를 반환!

예들 들어,

x: 1234
return: 4321

x: -1234
return: -4321

x: 1230
return: 321

2. 풀이

먼저 x의 부호는 유지한 상태로 결과값이 나오게 하기 위해 Math.abs() 메서드로 모두 양수로 바꾸어 주었다. 그리고 숫자의 자리대로 거꾸로 뒤집어주기 위해 toString() 메서드로 문자열로 바꾸어 주었다.
그렇게 나온 xString을 split('') 메서드를 이용하여 각 숫자마다 따로 떼어서 배열로 만들어주었다. 여기까지 하면, 1234를 넣었을 때 ['4', '3', '2', '1']로 나오게 된다.

이 배열을 reduce((acc, cur) => acc + cur) 메서드를 활용해 '4321'로 만들어주었고, 이 문자열을 숫자로 만들어주기 위해 단항 연산자인 '+'를 앞에 붙여 주어서 숫자 4321로 만들었다.

마지막으로 인자로 받는 x값이 0보다 작은 경우에만 -를 붙여주는 조건을 작성하면 깔끔하게 결과가 나온다!

const reverse = x => {
  const xString = Math.abs(x).toString()
  const result = +xString.split('').reverse().reduce((a, b) => a + b)
  
  if (x < 0) {
    return -result
  } else {
    return result
  }
}

console.log(reverse(1234)) //4321
console.log(reverse(-1234)) //-4321
console.log(reverse(1230)) //321

좋은 웹페이지 즐겨찾기