code-kata day2

dumibell·2022년 6월 8일
1

문제

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

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

1) 예를 들어, x: 1234 return: 4321

2) x: -1234 return: -4321

3) x: 1230 return: 321



풀이


⬇️전체풀이

const reverse = x => {
  if(x < 0) {
    x = Math.abs(x)
    x = String(x)
    x = Number(x.split('').reverse().join(''));
    x = x * -1
  } else {
      x = String(x)
      x = Number(x.split('').reverse().join(''))    
  }
  return x;
}



우선 문제를 보자마자 숫자를 string으로 바꾼 후 split해야겠다는 생각을 했다.

const reverse() => x {
 	x = String(x)
 	x = Number(x.split('').reverse().join(''))
  	return x
}

위처럼 코드를 짠 후 reverse 함수를 실행시키면 숫자가 양수일 경우에는 실행이 되지만, 음수일 경우에는 -(마이너스부호)까지 reverse가 되어버린다.

따라서 처음에는 if문을 사용하여

1) 인자가 끝자리가 0이 아닌 양수일 때
2) 인자가 끝자리가 0으로 끝나는 양수일 때
3) 인자가 음수일 때

세 조건으로 나누어 생각을 해보았다.

하지만 결국 Number()메서드를 사용해 string을 숫자로 변경하면
0001은 결국 1이라는 숫자로 출력이 되기 때문에
조건식을 '인자가 음수일 때(if)', '그렇지 않을 때(else)' 두 개만 작성하게 되었다.


if(x < 0) {
    x = Math.abs(x)
    x = String(x)
    x = Number(x.split('').reverse().join(''));
    x = x * -1
  }

우선 음수의 경우 바로 string으로 전환할 경우 '-'가 남기 때문에 Math.abs() 메서드를 사용해 음수를 양수로 전환해 마이너스 부호를 없애준 후 인자가 양수일 때와 똑같이 로직을 구현해보았다.

다만 결과값을 반환할 때는 앞에 마이너스 부호가 붙은 음수를 반환해야 하기 때문에 -1을 곱해주었다.

profile
프론트엔드 개발자👩‍💻

0개의 댓글