<코드타카 1주차 04.>

강민수·2021년 12월 19일
0

Day 4

문제

숫자인 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 이기 때문

문제푸는 수도 코드의 과정.

  1. 문제의 조건을 정리하면, 숫자인 num을 인자로 받는 함수가 있다.
  2. 그 함수의 결과값은 불리언 값이 도출된다.
  3. 불리언 값의 조건을 설정해 주기 까지의 과정이 이 문제의 핵심!
  4. 그에 따라 조건을 하나 씩 순차적으로 처리해 봤다.
  5. 먼저, num인 숫자를 스트링으로 전환시켜야 한다.
  6. 일반적으로 숫자로 바로 비교하기는 어렵기 때문에 스트링으로 전환시켰다.
  7. 다음은 비교의 용이성을 위해 다시 배열로 만드는 메서드를 쓴다.
  8. 그리고나서 배열을 다시 리버스 시켜준다.
  9. 이때 리버스 한 값을 다시 스트링으로 반환 시킨다.
  10. 그리고 기존의 스트링 한 num과 리버스 한 num을 조건문 비교를 해준다.
  11. 이를 통해, 같으면 트루, 다르면 폴스로 반환시킨다.

<풀이 1번>

const sameReverse = num => {
const numToArray = String(num).split("")//스트링화 된 문자를 다시 스플릿으로 나눠서 배열로 전환
console.log(numToArray);// 콘솔을 찍어 확인해 보는 과정도 필요하다!!!
const numReverse = [...numToArray].reverse()// 리버스 메서드와 더불어 깊은 복사를 활용한다. 
// 이 부분은 다시 아래에 상술할 예정임. 
console.log(numReverse); // 리버스 확인. 
if(String(numToArray)=== String(numReverse)){
  return true;
}
else{
  return false;
}
}
console.log(sameReverse(230));

풀이2.

  1. 전술한 바와 같이, 일반적으로 배열로 바꿔서 푸는 풀이법과 달리, 이번에는 num을 그냥 숫자 그대로 두고 풀어볼 것이다.
  2. 즉, 위의 풀이와 달리 이번에는 메서드만을 활용해 변수를 설정해 주고 메서드들의 최종 과정에서 나온 값을 기존의 num과 비교해 볼 것 이다.
const sameReverse = num => {
let reverseNum = Array.from(String(num)).reverse().join('').toString()
//후술하겠지만, Array.from() 메서드는 유사 배열 객체(array-like object)나 
//반복 가능한 객체(iterable object)를 얕게 복사해 새로운Array 객체를 만든다. 이후에는 다시
//배열의 순서를 뒤집는다. 그리고 다시 조인 메서드를 통해 숫자와 시켜준다. 그리고 toString 메서드
//로 문자화 시킨다. 

return (String(num) === reverseNum);// 이제 기존의 num의 문자화와 리버스 넘의 문자화를 비교한다.

}

console.log(sameReverse(1234))

module.exports = { sameReverse }


const sameReverse = num => {
 let a = Number(String(num).split("").reverse().join(""))
 if( a === num) {
   return true
 } else  return false
}

풀이 3의 경우, 풀이2와 대동소이 하나,

a를 스트링화를 다시 하지 않고 숫자 그대로 비교해 본다는 점에서 차이가 있다. 이 경우에도, 역시 동일하게 작동하다.

이유는 음수일 경우 역시 엄격 일치 연산자를 통해 비교해 보면, -121과 121-는 다르기 때문이다.

따라서 해당 코드 역시 테스트 통과가 가능했다.

💡 이후 얇은 복사 깊은 복사에 대한 개념을 조금 더 알아볼 필요가 있다. 이에 대해서 추가학습 해두면 좋겠다.
profile
개발도 예능처럼 재미지게~

0개의 댓글