정수인 숫자 받아서 순서 뒤집기, JavaScript

라용·2022년 8월 31일
0

위코드 - 스터디로그

목록 보기
21/100

위코드 코드카타를 풀며 정리한 내용입니다.

문제

정수인 숫자를 인자로 받고, 그 숫자를 뒤집어서 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 으로 삼항연산자를 사용해 식이 매우 간결해졌습니다.

profile
Today I Learned

0개의 댓글