WeCode Kata Day 2

luneah·2021년 11월 30일
0

WeCode Kata

목록 보기
2/20
post-thumbnail

문제

reverse 함수에 정수인 숫자를 인자로 받는다. 그 숫자를 뒤집어서 return 하라.

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

Ex)
x: 1234 return: 4321
x: -1234 return: -4321
x: 1230 return: 321

Thinking Algorithm

x는 숫자, return은 뒤집어진 숫자 반환
ㄴ 숫자는 뒤집을 수 없으므로 문자열로 변환하여 뒤집어줘야 함

  1. x를 문자열로 변환
  2. 각각의 숫자를 나눠줌 (배열로 반환)
  3. 해당 배열을 뒤집어줌
  • 뒤집은 후 반환 방법
    1) '-' 가 있을 경우
        ㄴ '-'가 맨 뒤로 가게 되므로 맨 뒤에서 빼서 맨 앞으로 넣어줘야 함
    2) 맨 앞자리가 0일 경우
      ㄴ 맨 앞에서 빼줘야 함
    3) 일반 숫자 뒤집은 그대로 반환
  1. 배열로 반환된 문자열을 합쳐줌
  2. 숫자형으로 반환

Code

const reverse = x => {
  let str = x.toString().split("").reverse();
  if(str[str.length-1] === "-") {
    str.pop();
    str.unshift("-");
  }
  else if(str[0] === "0") {
    str.shift();
  }
  return Number(str.join(''));
}

다른 풀이 방법 1

// Thinking Algorithm

  1. 음수인 숫자를 양수로 만들어줌
  2. x를 문자열로 변환
  3. 결과값을 담을 result 변수 선언
  4. 변환된 문자열의 가장 끝 인덱스부터 순환하여 result에 집어넣어줌
  5. 기존 x가 음수였을 때 다시 -1 곱해주어 리턴

// Code

const reverse = x => {
  let minus = false;   // minus 변수 선언

  if(x < 0) {
    x *= -1;
    minus = true;  // x가 음수일 때 minus 값 true
  }

  str = x.toString();
  let result = '';

  for(let i=str.length-1; i>=0; i--) {
    result += str[i];
  }
  result = minus ? result * -1 : Number(result);
  // 삼항연산자 사용해 기존의 x가 음수일 때 result에 -1 곱해주고 아니면 Number형으로 반환

  return result;
}

다른 풀이 방법 2

// Thinking Algorithm

  1. 부호를 먼저 결정해줌
      ㄴ 양수면 1, 음수면 -1
  2. x 문자열로 변환, 각각의 숫자 나눠줌, 뒤집고 다시 합쳐줌
      ㄴ -1234의 경우 4321-로 나오므로 parseInt로 정수형으로 변환해줌
  3. 나온 결과 값에 부호값 곱해줌

// Code

const reverse = x => {

let sign = 0;
if (x >= 0){
  sign = 1
} 
else{
  sign = -1
}

let result = parseInt(x.toString().split('').reverse().join(''))*sign;

return result;

}
profile
하늘이의 개발 일기

0개의 댓글