위코드 코드카타를 풀며 정리한 내용입니다.
정수인 숫자를 인자로 받고, 그 숫자를 뒤집어서 return 합니다.
x : 1234 - return : 4321
x : -1234 - return : -4321
x : 1230 - return : 321
숫자의 개념으로 접근하지 않고 문자로만 생각하게 되면 아래와 같은 잘못된 코드를 짜게 됩니다.
const reverse = x => {
let strNum = x.toString(); // 입력된 숫자를 문자 타입으로 형변환
let arrStrNum = strNum.split(""); // 해당 문자를 하나씩 나눠서 배열에 담고
let reArrStrNum = arrStrNum.reverse(); // 배열 순서 뒤집기
if (reArrStrNum[0] === "0") { // 뒤집은 배열의 첫째 자리에 0이 오면
reArrStrNum.shift(); // 0을 지우고
} else if (reArrStrNum[reArrStrNum.length-1] === "-") { // 제일 뒤에 - 이 붙으면
reArrStrNum.pop(); // 제일 뒤에서 - 을 빼주고
reArrStrNum.unshift("-"); // 제일 앞에 - 을 붙여주는..
}
let result = Number(reArrStrNum.join("")); // 해당 배열을 문자로 합치고 숫자형으로 변환
console.log(result);
return result
}
정답 코드는 아래와 같이 간결합니다. 문제를 정확히 이해하고 적용하는 연습이 필요합니다..
const reverse = x => {
let returnNum = parseInt(x.toString().split("").reverse().join(""));
return x >= 0 ? returnNum : -returnNum;
}
입력된 숫자를 문자형으로 변환하고, 각 요소를 나누어 배열에 담고, 뒤집은 다음, 다시 묶어서 숫자로 만드는 과정은 동일합니다. 이 과정에서 마지막 형변환을 parsInt 로 하면 0124 란 숫자는 124으로 출력됩니다. - 값의 경우도 1234- 로 입력되면 1234로 반환되니 최종 값에 - 만 붙여주면 됩니다. 위 코드는 return 으로 삼항연산자를 사용해 식이 매우 간결해졌습니다.