Code Kata #2 Reverse


💻Reverse


パラメータとして整数をreverse関数として受信します.その数字をひっくり返して返してください.
例えば、x:1234 return:4321
x: -1234 return: -4321
x: 1230 return: 321

最初の解答

const reverse = x => {
  let str = x.toString()
  const arr = str.split('')
  const newArr = arr.reverse()
  let newStr = newArr.join('')
  return Math.sign(x)*newStr
  //return parseInt(x.toString().split('').reverse().join('')) * Math.sign(x);
}
考えが単純だ.
問題の要件は「整数数字」「逆さ」の2つで、数字をひっくり返す方法が見つかった.
頭の中で一番簡単な方法は
 let str = x.toString() // 배열로 변환하기 위해 문자열 변환
 const arr = str.split('') //배열로 변환
 const newArr = arr.reverse() // 배열 메소드 활용하여 거꾸로 뒤집기
  let newStr = newArr.join('') // 뒤집은 배열을 다시 문자열로 합치기
 return Math.sign(x) // javascipt가 동적 타입 언어인 것을 활용하여 그냥 문자열에 정수 곱해버리기
はい.
問題を迅速に解決した後,変数過多で再構成することにした.
const reverse = x => {
  return parseInt(x.toString().split('').reverse().join('')) * Math.sign(x);
}
カバーしていましたが、残念な点も多く、理由はバリエーションが多すぎるからです.
정수->문자열->배열->문자열->정수....
これはコード性能の低下の原因に違いないと思います.別の方法を決める.

💡第二の解釈

const reverse = x => {
  let r = 0
  let q = 0
  
 while(x){
    r = x%10
    q = (q*10) + r
    x = parseInt(x/10)
  }return q
}
パラメータとして整数が得られた以上、整数で解決したい.
const reverse = x => {
  let r = 0 // 나머지를 담을 빈 정수 r을 생성
  let q = 0 // 답을 담을 빈 정수 q를 생성
  
 while(x){
    r = x%10 // 인자로 받은 x를 10으로 나눈 후 나머지를 r에 저장 (1의 자리 수 확보)
    q = (q*10) + r // 반복문이 돌며 수가 계속 채워져야 함으로 확보한 나머지에 10을 곱하여 10의 자리로 보낸 후 새로운 나머지를 더하기
    x = parseInt(x/10) // 이 식은 x의 몫이 0이 될때까지 진행
  }return q
}💡
人字xは浄水器なので、すぐに余剰とシェアを利用しようという考えが浮かびました.
しかし、いつまで実行しますか?正しい部分で塞がれています.
通常はfor문を回転させるときはiの値です.アレイの繰り返し文をよく回転させるからです.
反復文に純粋な真髄を用いた概念は頭に入らなかった.
この部分を考えているうちに、初めてJSを勉強したときに使ったwhile문を本当に思い出しました.
while文を使うと、何回繰り返すかわからなくても、繰り返し文を回すことができます.
 x = x/10 // 처음엔 단순히 x값을 계속 10으로 나누면 되겠지 했는데, 0으로 딱 떨어지지 않아서그런지 infinity가 출력이 되었다.
 x = parseInt(x/10) // parseInt를 사용하여 0근사치는 0으로 출력되게 만들어 주었다.