코드카타 문제 다시 보면서 알아가기
문제
숫자인 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 이기 때문
const sameReverse = num => {
let i = new String(num);
j = [...i];
let result = j.reverse();
console.log(result)
let k='';
for(let i=0; i<result.length; i++){
k += result[4]; //[3,2,1][0]
// k = k + result[i] //[k안에 for문에 돌면서 한개씩 쌓인다.]
}
if(num === Number(k)){
return true;
} else {
return false;
}
}
console.log(sameReverse(123));
코드리뷰:
먼저 new String 메서드를 let i에 넣어준다. 이러면 123이 문자형으로 바뀐다. 그 다음 i를 배열로 바꿔주는 [...i] 스프레드 연산자와 대괄호를 써서 j에 넣어준다음 .reverse() 메서드를 이용해서 반대로 바꾼다. [3,2,1]로 바뀐다. 그걸 result에 넣어준다. 그다음 빈문자열 k를 만들어주고 for문으로 i = 0 이라고 설정해주고 i는 result.length가 3이면 0,1,2까지 늘어난다. for문이 돌면서 k안에 문자열로 된 숫자가 한개씩 쌓인다. [3,2,1][0] = [3]
그리고 그게 num과 Number(k)(k는 이제 숫자형으로 바뀐다)랑 같은지 다른지 자료형까지 비교하고 123 = 321 을 비교해서 이제 다르니까 false가 나오는 식이다.