알고리즘
JavaScript:: 정수 뒤집어 return 하기
더 멋진 세상을 꿈꾸는 개발자
2020. 7. 7. 13:50
< 문제 >
reverse 함수에 정수인 숫자를 인자로 받습니다.
그 숫자를 뒤집에서 return 해주세요.
x : 숫자
return : 뒤집어진 숫자를 반환!
예를들어,
x : 1234
return : 4321
x : -1234
return : -4321
x : 1230
return : 321
우리가 함수를 통해 구현해야 할 것은 아래와 같다.
1. x가 숫자인 상태에서 수를 뒤집을 수 없으니 x를 문자열로 바꾸어 주어야 한다.
2. x 문자열의 각 요소를 분리하여 하나의 배열로 만든다.
3. 배열의 자리를 뒤집는다.
4. 만약 배열에 '-' 가 들어갈 경우, 배열을 뒤집었을 때 - 가 맨 뒤로 가기에 뒤에 있는 -를 빼주고 배열의 맨 앞에 -를 넣어준다.
5. 만약 배열 index 0번째 자리에 0이 올 경우, 배열 첫 자리를 생략해준다.
6. 결과값의 배열을 하나의 string으로 붙여주고, 숫자로 변환한다.
각 구현 방법은 아래와 같다.
1. x.toString()
2. x.split('')
3. x.reverse()
4. .pop() , .unshift();
if(string[string.lenth-1] === '-') {
string.pop();
string.unshift('-');
}
5. .shift()
else if(string[0] === 0) {
string.shift();
}
6. Number( .join(''));
완성 코드는 아래와 같다.
const reverse = x => {
let string = x.toString().split("").reverse();
console.log(string);
if(string[string.length-1] === '-') {
string.pop();
string.unshift('-');
} else if(string[0] === 0) {
string.shift();
}
return Number(string.join(''));
}
reverse(12340);
또 다른 방법은 아래와 같다.
function reverse(x) {
let minus = false;
if (x < 0) {
x *= -1; // -를 곱해주어서 양수로 만들기
minus = true;
}
let numText = x.toString();
let result = '';
for (let i = numText.length-1; i >= 0; i--) {
result += numText[i];
}
// 기존 수가 음수일 경우, 다시 -를 곱해서 음수로 만들어준다.
result = minus ? result * -1 : Number(result);
return result;
}