reverse 함수에 정수인 숫자를 인자로 받습니다. 그 숫자를 뒤집어서 return해주세요.
x: 숫자 return: 뒤집어진 숫자를 반환!
예를 들어, x: 1234 return: 4321
x: -1234 return: -4321
x: 1230 return: 321
const reverse = (x) => {
const reversedNumber = parseInt(x.toString().split("").reverse().join(""));
return x < 0 ? reversedNumber * -1 : reversedNumber;
};
parseInt
는 숫자 + 문자열의 조합일 때 문자열 이전의 숫자를 반환하기에 변수에 저장하고, x
가 음수이냐를 따져 반환할 때 -1을 곱하는 방식을 사용했다.
const reverse = (x) => {
let result = 0;
while(x) {
result = result * 10 + x % 10;
x = Math.trunc(x / 10)
}
return result;
}
result
의 초깃값을 0으로 설정한 뒤 while
문을 통해 반복문을 돈다.Math.trunc()
을 통해 x가 양수이면 x / 10
을 내림하고, x가 음수이면 x / 10
을 올림한다.내가 푼 방식은 메서드 체이닝을 통해 보기에 깔끔하다는 장점이 있는 것 같지만, 숫자의 자릿수가 커질 경우 쪼개고-뒤집고-붙이는 과정에서 불필요하게 많은 작업이 소요될 것 같다.
하지만 이 방식으로 풀면 숫자의 자릿수만큼만의 단계만이 소요되므로 훨씬 효율적일 것이라는 생각이 들었다.