문제
reverse 함수에 정수인 숫자를 인자로 받습니다. 그 숫자를 뒤집어서 return해주세요.
x: 숫자 return: 뒤집어진 숫자를 반환!
예들 들어, x: 1234 return: 4321
x: -1234 return: -4321
x: 1230 return: 321
내 Flow
- 인자로 받은 x를 숫자에서 문자로 바꾼다.
- 바꾼 문자를 배열로 쪼갠다.
- 배열을 뒤집는다.
- 뒤집은 배열을 다시 문자로 합친다.
- 단 0이 앞으로 나오면 0을 삭제해야 하고, 음수일 경우 결과값도 음수로 반환해야 한다.
💬 1~4까지는 쉬웠으나, 5번의 조건이 어려웠다. 찾아보니 parseFloat() 메소드와 Math.sign() 메소드에 대해 알게 되었다.
parseFloat() 메소드는 주어진 값을 필요한 경우 문자열로 변환한 후 부동소수점 실수로 파싱해 반환한다. 이 함수는 양의 부호(+), 음의 부호(-), 숫자(0-9), 소수점(.), 지수(e, E) 외의 다른 글자를 발견할 경우 해당 문자 이전까지의 문자만 사용해 파싱한다. 따라서 음수의 경우 -까지 뒤집은 후에 이 함수를 써주어야 한다. -123이라면 321-로 반환 후 parseFloat()를 쓸 것! 그러면 321로 출력되는데, -를 다시 붙이기 위해 Math.sign() 함수를 쓰는 것이다. Math.sign() 함수는 주어진 수의 부호를 나타내는 +/-1을 반환한다. 심지어 0이어도 음의 0일 경우 -0을 반환한다. 메소드를 잘 사용하면 풀이가 굉장히 짧아질 수 있다.
풀이
const reverse = x => {
result = parseFloat(x.toString().split('').reverse().join('')) * Math.sign(x)
return result;
}
참고
MDN https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/parseFloat
MDN https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Math/sign
'알고리즘 > 코드카타' 카테고리의 다른 글
Week2 - Day3 (Javascript) (0) | 2022.07.14 |
---|---|
Week2 - Day2 (Javascript) (0) | 2022.07.14 |
Week2 - Day1 (Javascript) (0) | 2022.07.11 |
Week1 - Day5 (Javascript) (0) | 2022.07.07 |
Week1 - Day3 (Javascript) (0) | 2022.07.06 |