Integer Reversal

Directions

주어진 정수의 숫자가 역순으로 정렬된 새로운 정수를 반환하기.

Examples

reverseInt(15) === 51
reverseInt(981) === 189
reverseInt(500) === 5
reverseInt(-15) === -51
reverseInt(-90) === -9

TIP

const myNumber = 200
myNumber.toString().split('') // ['2','0','0']
myNumber
  .toString()
  .split('')
  .join('') // 200

Math.sign(4000) // 1
Math.sign(-4000) // -1

parseInt(myNumber.toString()) / 2000 // 0.1

1.

주어진 숫자를 역순으로 반환시키는 방법은 간단합니다.

  1. 정수를 문자열로 변환
  2. 문자열을 ''단위로 나누기
  3. ''단위로 나누어진 문자열을 역순으로 정렬
  4. 문자열 합치기
const integer = 15
const reversed = integer
  .toString()
  .split('')
  .reverse()
  .join('')

console.log(parseInt(reversed)) // 51

WARNING

하지만, 이렇게 처리할 경우 문제가 발생하게 되는데요.

만약 input 값에 음의 정수를 대입할 경우, 정확한 값을 반환하지 않습니다.

const integer = -15
const reversed = integer
  .toString()
  .split('')
  .reverse()
  .join('')

console.log(parseInt(reversed)) // 51

위와 같은 경우에 -51 을 출력해야 하지만 51 을 출력하게 됩니다.

다음에 나오는 코드와 같이 조건문을 사용하여 음의 정수를 처리할 수 있습니다.

function reverseInt(n) {
  const reversed = n
    .toString()
    .split('')
    .reverse()
    .join('')

  if (n < 0) {
    // 대입값이 음의 정수일 경우 결과값에 -1을 곱한다.
    return parseInt(reversed) * -1
  } else {
    return parseInt(reversed)
  }
}

module.exports = reverseInt

2.

자바스크립트는 주어진 숫자가 양수인지, 음수인지, 0 인지 판별해주는 sign 이라는 매소드를 가지고 있습니다.

이번에는 위에서 조건문으로 처리한 부분을 sign 매소드를 사용하여 처리해 보겠습니다.

function reverseInt(n) {
  const reversed = n
    .toString()
    .split('')
    .reverse()
    .join('')

  return parseInt(reversed) * Math.sign(n)
}

module.exports = reverseInt

Test

const reverseInt = require('./index')

test('ReverseInt function exists', () => {
  expect(reverseInt).toBeDefined()
})

test('ReverseInt handles 0 as an input', () => {
  expect(reverseInt(0)).toEqual(0)
})

test('ReverseInt flips a positive number', () => {
  expect(reverseInt(5)).toEqual(5)
  expect(reverseInt(15)).toEqual(51)
  expect(reverseInt(90)).toEqual(9)
  expect(reverseInt(2359)).toEqual(9532)
})

test('ReverseInt flips a negative number', () => {
  expect(reverseInt(-5)).toEqual(-5)
  expect(reverseInt(-15)).toEqual(-51)
  expect(reverseInt(-90)).toEqual(-9)
  expect(reverseInt(-2359)).toEqual(-9532)
})