본문 바로가기
D.evelop [CS]/Algorithm

[Algorithm 006] JS - reverse

by Danne 2021. 9. 14.

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

 

결과 예)

x: 1234 
return: 4321

x: -1234 
return: -4321

x: 1230 
return: 321

 

A. 우리 팀 답

 

const reverse = x => {
  let arr = x.toString().split('');
  console.log(arr)

  if (arr[0] === '-'){
    arr.shift()
    arr.reverse();
    arr.unshift('-')
  }else{
    arr.reverse();
  }
  
  return parseInt(arr.join(""))
  
}

console.log(reverse(1234))

 

  • Array.reverse() : 배열의 순서를 반전해주는 매서드 (MDN 명세)
  • Array.join() : 배열을 하나의 문자열로 만듦
  • parseInt() : 문자열 속을 숫자를 정수형으로 반환해주는 메서드 (MDN명세)
    • '1234abcdaer6789'의 경우 1234까지만 반환함
    • 'abcdaer6789'의 경우 NaN 반환함
  •  음수(-)값일 경우 "-"문자를 붙인 뒤 정수화시켜 해결

 

A. 두 번째 답 

const reverse = x => {
  return parseInt(x.toString().split('').reverse().join('')) * Math.sign(x);
}

console.log(reverse(-1234)) // -4321
console.log(reverse(12340)) // 4321

 

  • 변수 선언을 최소화해보기
  • "문자열 변환 > 배열로 변환 > 뒤집기 > 합치기 > 정수화"로 숫자형으로 만든 뒤,
  • Math.sign()을 사용해 x가 양수일 때는 1, x가 음수일 때는 -1을 곱해 해결
  • Math.sign() : parameter로 받은 값에 따라 양수, 음수, 0을 나타내주는 함수

 

Math.sign(3);        //  1
Math.sign(-3);       // -1
Math.sign('-3');     // -1   : 숫자로만 구성된 문자열일 경우 숫자처럼 계산혜줌
Math.sign('3aaa');   // NaN
Math.sign(0);        //  0
Math.sign(-0);       // -0  
Math.sign(NaN);      // NaN 
Math.sign('num');    // NaN
Math.sign();         // NaN

 

 

 

반응형

댓글