본문 바로가기

프로그램 강좌

[LeetCode]9. Palindrome Number - javascript

회문, 팰린드롬이라고 한다. 낯선 명칭에 당황하겠지만은 내이름은 이효리 거꾸로 해도 이효리 같은겁니다.
토마토 이런거

인풋, 아웃풋

Input Output
121 true
-121 false
10 false
-101 false

첫번째 시도(실패)

내가 착각한게 숫자를 배열화 한후의 값이랑 뒤집은 값을 비교했을때 같으면 같을거라고 생각했는데, 컴퓨터는 다르다고 합니다. 이건 컴퓨터가 못알아먹으니 패스

/**
 * @param {number} x
 * @return {boolean}
 */
var isPalindrome = function(x) {
    if(x<-1) return false; //OK
    else{ 
        let arrX = Array.from(String(x));
        let rArrX = [];
        for(let i of arrX){
            rArrX.unshift(i);
        }
        console.log(arrX);
        console.log(rArrX);
        if(arrX === rArrX) return true; //Not OK
        else return false; 
    }
};

 

두번째 시도(성공)

또 다른 쪼개기로 split을 사용하려면 문자화가 필요합니다. 문자화.Split('') 특정 단어로 자르는걸 안넣었으니 한글자씩 잘려 배열화 됩니다. reverse를 하면 뒤집어질거고 이걸 다시 join을 하면 합쳐지죠.

/**
 * @param {number} x
 * @return {boolean}
 */
var isPalindrome = function(x) {
    // console.log(x.toString().split('').reverse().join(''));
    return x==String(x).split('').reverse().join('')
};

세번째 시도(성공)

복습할때 정석적인 방법으로 풀어보고 싶어 다른 방법으로 시도했습니다. 일단 음수면 확실히 제끼는게 좋을것 같네요.
다음은 글자 전체를 다 탐색할 필요가 없습니다. 절반까지만 확인하면 되요.

/**
 * @param {number} x
 * @return {boolean}
 */
var isPalindrome = function(x) {
    if(x<0) return false;
    else {
        let str = x.toString(),
            len = str.length;
        // console.log(len);
        for(let i=0;i<=Math.floor(len/2);i++){
            //console.log(str[i], str[len-i-1]);
            if(str[i]!==str[len-i-1]) return false;
        }
        return true;
    }
};

728x90

'프로그램 강좌' 카테고리의 다른 글

[LeetCode]14. Longest Common Prefix - javascript  (0) 2021.11.20
[LeetCode] 13. Roman to Integer - javascript  (0) 2021.11.19
[LeetCode] 1: TwoSum - javascript  (0) 2021.11.17
CSS 지원 브라우저 확인  (0) 2021.09.27
[CSS]:not  (0) 2021.07.04