오늘은 앞으로 읽어도 뒤로 읽어도 똑같은 Palindrome Integer를 확인하는 방법에 대해 알아보도록 하겠습니다.
문제
함수에 x 파라미터가 Integer 값일 때 이 값이 Palindrome 인지 여부를 Boolean으로 리턴하는 문제입니다. 예를 들면 아래와 같은 아웃풋이 나오면 되겠습니다.
Input: 121
Output: true
Input: -121
Output: false
Input: 10
Output: false
여기서 주의해아할 점은 -가 붙는 경우 무조건 false입니다. 왜냐하면 [“-”,”1",”2",”1"]은 palindrome이 아니기 때문이죠. 이점만 유의하고 푸시면 어려운 점은 없는 문제입니다.
풀이
커서를 왼쪽 끝과 오른쪽 끝 두 가지로 가져가고 서로 한 칸씩 좁혀가며 커서에 해당되는 두 값이 같은지 않은지 체크를 하시면 됩니다. 이때 숫자의 처음부터 끝까지 모두 보실 필요는 없고 중간까지만 체크를 하시면 됩니다.
const isPalindrome = function(x) {
// 마이너스 값이면 바로 false 리턴
if (x < 0) {
return false;
}
// Integer를 array화
const arr = x.toString().split('');
const length = (arr.length) / 2;
for (let i = 0; i < length; i++) {
const startCursor = arr[i];
const endCursor = arr[arr.length - i - 1];
// 두 커서의 값이 매칭이 안되면 바로 return false
if (startCursor !== endCursor) {
return false;
}
}
// 문제 없을경우 return true
return true;
};
아래 링크를 참조한 문제입니다.