[Algorithm] [초급] Palindrome 숫자 찾기

오늘은 앞으로 읽어도 뒤로 읽어도 똑같은 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;
};

아래 링크를 참조한 문제입니다.

LeetCode

©Code Factory All Rights Reserved