본문 바로가기
This is my cute cat.

Jaehee

Hi!

Thumbnail of LeetCode - 9. Palindrome Number

LeetCode - 9. Palindrome Number

시리즈: LeetCode

작성일 수정일

목차

문제 개요

난이도 - EASY 사용 언어 - C++

정수형 입력값이 회문인지 검사합니다. 만약 121이 입력된다면 121을 뒤집은 값도 121이니 회문입니다.

만약 -121이 들어온다면 뒤집었을 때 121-가 되므로 회문이 아닙니다. 123 또한 뒤집었을 때 321이 되므로 회문이 아닙니다.

문제 - LeetCode 9. Palindrome Number

풀이

Solution

bool isPalindrome(int x) 
{
    if (x < 0) return false;
    else if (x < 10) return true;
    else if ((x % 10) == 0) return false;

    long reverse = 0;
    long tmpX = x;

    while (tmpX)
    {
        reverse = (reverse * 10) + (tmpX % 10);
        tmpX /= 10;
    }

    return reverse == x;
}

먼저 음수인 경우 절대 회문이 될 수 없기 때문에 false를 반환합니다.

숫자가 한 자리인 경우는 무조건 회문이기 때문에 true를 반환합니다.

10의 배수는 10, 20, … 120, 130 등 회문이 절대 될 수 없기 때문에 false를 반환합니다.

입력값 x를 뒤집은 값 reverse를 구합니다. reverse의 타입이 long인 이유는, x 값으로 int 자료형의 최댓값이 들어올 경우 뒤집는 연산 중 오버플로가 발생할 수 있기 때문입니다. 그래서 int보다 큰 자료형인 long을 사용했습니다(별도의 자료형 제한이 없었기 때문에 사용할 수 있었습니다).

제출 결과

Solution 1 result

실행 결과 0ms가 나왔으며, 다른 C++ 제출자보다 100%의 성능을 보였음을 확인할 수 있습니다.

코드 전문
class Solution 
{
public:
    bool isPalindrome(int x) 
    {
        if (x < 0) return false;
        else if (x < 10) return true;
        else if ((x % 10) == 0) return false;

        long reverse = 0;
        long tmpX = x;

        while (tmpX)
        {
            reverse = (reverse * 10) + (tmpX % 10);
            tmpX /= 10;
        }

        return reverse == x;
    }
};

LeetCode 시리즈의 다른 게시물 보기

Thumbnail of LeetCode - 13. Roman to Integer

주어진 로마 숫자를 정수형 숫자로 변환합니다.

Thumbnail of LeetCode - 12. Integer to Roman

정수형 숫자가 주어질 때 로마 숫자로 변환합니다.

Thumbnail of LeetCode - 11. Container With Most Water

다양한 길이를 가진 막대들을 이용해 가장 많은 액체를 담을 수 있는 양을 구합니다.

Thumbnail of LeetCode - 10. Regular Expression Matching

정규 표현식 "."과 "*"을 구현하여 문자열에서 패턴을 탐색합니다.

Thumbnail of LeetCode - 9. Palindrome Number

입력된 정수가 회문인지 검사합니다.

Thumbnail of LeetCode - 8. String to Integer (atoi)

입력된 문자열에서 정수를 Parsing하는 atoi 함수를 구현합니다.

Thumbnail of LeetCode - 7. Reverse Integer

주어진 정수를 뒤집어(Reverse) 변환합니다.

Thumbnail of LeetCode - 6. Zigzag Conversion

문자열을 지그재그로 변환합니다.