reverse 함수에 정수인 숫자를 인자로 받습니다. 그 숫자를 뒤집어서 return해주세요.
x: 숫자 return: 뒤집어진 숫자를 반환!
1) 예를 들어, x: 1234 return: 4321
2) x: -1234 return: -4321
3) x: 1230 return: 321
⬇️전체풀이
const reverse = x => {
if(x < 0) {
x = Math.abs(x)
x = String(x)
x = Number(x.split('').reverse().join(''));
x = x * -1
} else {
x = String(x)
x = Number(x.split('').reverse().join(''))
}
return x;
}
우선 문제를 보자마자 숫자를 string으로 바꾼 후 split해야겠다는 생각을 했다.
const reverse() => x {
x = String(x)
x = Number(x.split('').reverse().join(''))
return x
}
위처럼 코드를 짠 후 reverse 함수를 실행시키면 숫자가 양수일 경우에는 실행이 되지만, 음수일 경우에는 -(마이너스부호)까지 reverse가 되어버린다.
따라서 처음에는 if문을 사용하여
1) 인자가 끝자리가 0이 아닌 양수일 때
2) 인자가 끝자리가 0으로 끝나는 양수일 때
3) 인자가 음수일 때
세 조건으로 나누어 생각을 해보았다.
하지만 결국 Number()메서드를 사용해 string을 숫자로 변경하면
0001은 결국 1이라는 숫자로 출력이 되기 때문에
조건식을 '인자가 음수일 때(if)', '그렇지 않을 때(else)' 두 개만 작성하게 되었다.
if(x < 0) {
x = Math.abs(x)
x = String(x)
x = Number(x.split('').reverse().join(''));
x = x * -1
}
우선 음수의 경우 바로 string으로 전환할 경우 '-'가 남기 때문에 Math.abs() 메서드를 사용해 음수를 양수로 전환해 마이너스 부호를 없애준 후 인자가 양수일 때와 똑같이 로직을 구현해보았다.
다만 결과값을 반환할 때는 앞에 마이너스 부호가 붙은 음수를 반환해야 하기 때문에 -1을 곱해주었다.