sameReverse 함수

문제

const sameReverse = num => {}

숫자인 num을 인자로 넘겨주면, 뒤집은 모양이 num과 똑같은지 여부를 반환해주세요.

num: 숫자 return: true or false (뒤집은 모양이 num와 똑같은지 여부)

예를 들어, num = 123 return false => 뒤집은 모양이 321 이기 때문

num = 1221 return true => 뒤집은 모양이 1221 이기 때문

num = -121 return false => 뒤집은 모양이 121- 이기 때문

num = 10 return false => 뒤집은 모양이 01 이기 때문

어떻게 접근할 것 인가?

'-'부호가 있으면 뒤집었을 때 같을 수 있을까? 모두 false.
우선 숫자를 문자로 변환하고, 문자를 뒤집어 주자.
문자를 뒤집을 때는 배열을 이용하여 하나씩 넣어주는 방법을 써보자.
그리고 배열을 비교하자.

나의 코드

const sameReverse = num => {
  let str = String(num);
  
  let split = Array.from(str);
  
  let arr = [];

  for(let i = split.length-1; i>=0; i--){
    arr.push(split[i])}

  if(split == arr){
    return true
  } else {
    return false
    }
}
sameReverse(1221)

테스트를 통과하지 못 했다. 콘솔을 찍어본 결과 배열이 같아 보여 true로 나올 것으로 예상했지만, false가 나왔다. 비교연산자를 이용하여 배열을 비교할 때 배열의 값을 비교하는 것이 아니라 값의 주소를 비교한다는 것!

join메서드를 이용해 배열을 벗겨서 문자로 만들어주고, Number메서드로 다시 숫자로 만들어 비교하였다. 결과는 true가 나왔다.

마무리

배열을 비교할 때는 조심하자. console을 출력해보고도 이상하면 그 부분에 대해 알아보자.
숫자를 문자로, 문자를 배열로, 배열을 다시 문자로.
유연한 사고를 가지자.

좋은 웹페이지 즐겨찾기