replit code kata 2일차

문제

reverse 함수에 정수인 숫자를 인자로 받습니다.
그 숫자를 뒤집어서 return해주세요.

x: 숫자
return: 뒤집어진 숫자를 반환!

예들 들어,
x: 1234
return: 4321

x: -1234
return: -4321

x: 1230
return: 321


const reverse = x => {
  // 여기에 코드를 작성해주세요.
  let string = x.toString().split("").reverse();
  //console.log(string);
  //console.log(string[string.length]);
  if(string[string.length-1] === '-'){
    string.pop(); //pop() 배열의 마지막 요소를 제거 한 후 제거한 요소를 반환
    string.unshift('-');
    console.log(string[string.length-1]);
  }else if(string[0] === 0){
    string.shift();
  }
  console.log(string);
  return Number(string.join('')); 
}


console.log('1230')

//1. x 숫자를 문자열로 치환
//2. 문자열로 치환된 숫자를 하나의 배열로 변환
//3. 배열의 자리를 뒤집는다.
//4. 만약 -가 들어가 있으면 -를 빼준다.
//5. 만약 배열 index 0번째 자리에 0이 올 경우, 배열 첫 자리를 생략해준다.
//6. 결과값의 배열을 하나의 string으로 붙여주고, 숫자로 변환한다.

module.exports = { reverse };

또 다른 방법



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;
}

알고리즘은 생각하면 할수록 끝이없는것같다...다르게 풀수있는 방법이 또 있을 것 같다.

좋은 웹페이지 즐겨찾기