어떠한 숫자를 앞뒤로 뒤집었을때 뒤집기 전 숫자와 같으면 True 다르면 False 를 나타내는 코드를 만들어라.
ex)
123 를 뒤집으면 321 이기 때문에 False.
1221을 뒤집으면 1221이기 때문에 True.
이전에 풀어본 팰린드롬 문제와 매우 유사하기 때문에 친근하게 느껴졌다.
팰린드롬은 거꾸로 뒤집어도 똑같은 문자 단어 인데 여기서 영감을 얻어 문제에 접근 해보았다.
우선 받게될 번호를 문자로 만들어준 뒤 배열로 만들어 준다.
let numArr = (num + '').split('')
다음은 포문을 열어 맨 앞 배열의 숫자와 맨 뒤 배열의 숫자를 비교한다.
for (i = 0; Math.floor(i < numArr.length / 2); i++) {
let left = numArr[i];
let right = numArr[numArr.length - 1 - i]
if (left !== right) {
return false;
}
} return true;
}
여기서 핵심은 for문을 몇번째 까지 돌리냐를 설정하는 아래 코드인데
Math.floor(i < numArr.length / 2)
배열에 있는 요소들의 수를 2로 나누고 Math.floor를 통해 소숫점은 버림을 해준다. 이렇게 되면 배열 요소의 수가 홀수일 경우 가장 중간에 있는 값은 비교하지 않게 된다.
그리고 두번째 핵심은 아래 코드이다.
let right = numArr[numArr.length - 1 - i]
배열의 lengh 값에 -1을 해줘 배열의 가장 마지막 값에 접근하고, 0부터 시작하는 i를 빼줌으로써 뒤에서부터 하나하나씩 왼쪽의 숫자로 이동할 수 있게 해준다.
그리고 마지막으로 왼쪽과 오른쪽의 숫자를 비교하는 불린을 통해 True False값을 정한다.
전체 코드 내용
const sameReverse = num => {
let numArr = (num + '').split('')
for (i = 0; Math.floor(i < numArr.length / 2); i++) {
let left = numArr[i];
let right = numArr[numArr.length - 1 - i]
if (left !== right) {
return false;
}
} return true;
}
오늘은 여기까지 ! 꾸준히 성장하는 개발자가 되겠다!