Algorithm - CodeKata #02

Sangho Moon·2020년 9월 1일
0

Algorithm

목록 보기
23/37
post-thumbnail
post-custom-banner

1. Question

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

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

예들 들어,
x: 1234
return: 4321

x: -1234
return: -4321

x: 1230
return: 321


2. Try & Answer

이번 문제는 구글링을 통해 해결했다..

처음에 코드를 찾아서 바로 제출버튼을 눌러보긴 했는데 통과가 되지 않았다.

코드에 뭔가 문제가 있었나보다.

그리고 여기에 쓰인 메서드들이 익숙하지 않기도 해서 하나하나 뜯어보며 코드를 다시 분석해 나갔다.

이 코드에 쓰인 메서드들을 먼저 소개해보자면 아래와 같다.


  • paseFloat() 함수는 문자열을 분석해 부동소수점 실수로 반환한다.

  • toString() 메서드는 특정한 Number 객체를 나타내는 문자열을 반환한다.

  • split() 메서드는 String 객체를 지정한 구분자를 이용하여 여러 개의 문자열로 나눈다.

  • reverse() 메서드는 배열의 순서를 반전한다.

  • join() 메서드는 배열의 모든 요소를 연결해 하나의 문자열로 만든다.

  • Math.sign() 함수는 어떤 수의 부호를 반환한다.


다음으로 메서드들을 하나씩 분석해보자.


1. 먼저 숫자의 순서를 뒤집는 메서드는 없으니 toString() 을 이용해 숫자를 문자로 변환한다.

const reverse = x => {
    return x.toString()
}

console.log(reverse(1234)); // '4321'
console.log(reverse(-1234)); // '-4321'

2. 그 다음 split('')으로 문자열을 하나씩 분리해서 배열로 만든다.
const reverse = x => {
    return x.toString().split('')
}

console.log(reverse(8712)); // [ '1', '2', '3', '4' ]
console.log(reverse(-8712)); // [ '-', '1', '2', '3', '4' ]

3. 그리고 reverse()로 배열의 순서를 뒤집는다.
const reverse = x => {
    return x.toString().split('').reverse()
}

console.log(reverse(1234)); // [ '4', '3', '2', '1' ]
console.log(reverse(-1234)); // [ '4', '3', '2', '1', '-' ]

4. join('')으로 배열의 모든 요소를 연결해 하나의 문자열로 만든다.
const reverse = x => {
    return x.toString().split('').reverse().join('')
}

console.log(reverse(1234)); // '4321'
console.log(reverse(-1234)); // '4321-'

5. parseFloat()을 이용해 숫자로 만든다.
const reverse = x => {
    return parseFloat(x.toString().split('').reverse().join(''))
}

console.log(reverse(1234)); // 4321
console.log(reverse(-1234)); // 4321

6. Math.sign(x)을 이용해 숫자의 부호까지 출력하게 만든다.
const reverse = x => {
    return parseFloat(x.toString().split('').reverse().join('')) * Math.sign(x)
}

console.log(reverse(1234)); // 4321
console.log(reverse(-1234)); // -4321

Ref.

profile
Front-end developer
post-custom-banner

0개의 댓글