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

Jaehee

Hi!

Thumbnail of LeetCode - 7. Reverse Integer

LeetCode - 7. Reverse Integer

시리즈: LeetCode

작성일 수정일

목차

문제 개요

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

정수 123이 주어진다면 321로, -123이 주어진다면 -321, 1200이 주어진다면 21로 변환하는 문제입니다.

문제 - LeetCode 7. Reverse Integer

풀이

Solution

while (x != 0)
{   
    if (result > (INT_MAX / 10)) return 0;
    else if (result < (INT_MIN / 10)) return 0;

    result *= 10;
    result += (x % 10);

    x /= 10;
}

단순히 입력값 x를 10으로 나눈 나머지를 result에 더하고, 다음 순회 시 result에 10을 곱하는 방식으로 변환했습니다.

입력값은 int 타입, 즉 32bit 크기의 자료형이므로, 뒤집은 값이 int 자료형의 범위를 넘을 경우 0을 반환하는 예외 처리를 수행합니다.

이번 문제에서는 INT_MAX 값을 이용해 int 타입의 범위를 검사했지만, long과 같이 int 타입보다 더 큰 자료형을 이용한다면 별도의 예외 처리가 필요하지 않습니다.

제출 결과

Solution 1 result

실행 결과 0ms가 나왔으며, 다른 C++ 제출자에 비해 100% 좋은 성능을 보임을 확인할 수 있습니다.

코드 전문
#include <cmath>
#include <climits>

class Solution 
{
public:
    int reverse(int x) 
    {
        if (x == 0) return x;

        int result = 0;

        while (x != 0)
        {   
            if (result > (INT_MAX / 10)) return 0;
            else if (result < (INT_MIN / 10)) return 0;

            result *= 10;
            result += (x % 10);

            x /= 10;
        }

        return result;
    }
};

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

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

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

Thumbnail of LeetCode - 5. Longest Palindromic Substring

주어진 문자열 중 가장 긴 회문(Palindrome)을 구합니다.

Thumbnail of LeetCode - 4. Median of Two Sorted Arrays

정수 값이 담긴 두 정렬된 배열의 중앙값을 계산합니다.