Reverse-Integer

Yohan Kim·2021년 8월 21일

서론

leetcode / top_interview / 2일차 문제입니다.
123 -> 321 이런 식으로 바꾸는 문제입니다.

leetcode.com/problems/reverse-integer

solution

class Solution {
public:
    int reverse(int x) {
        bool signX = false;
        if(x < 0 && x != INT_MIN){ signX = true; x *= -1;}
        
        int answer = 0;
        while( x > 0)
        {
            if( answer <=  INT_MAX /10)
            {   
                answer *= 10;
                answer += x%10;
                x /= 10;
            }
            else 
                return 0;
        }
        return signX ? answer * -1 : answer;
        
    }
};

결과

중간에 겪은 오류

처음에는 x 를 나눠서 무조건 answer를 10곱한 후 더 하게했다가,
INT_MAX : 2147483647 보다 작지만
error : 777777777 같은 경우 *10에서 overflow가 발생했다.

그 후에는 x에 INT_MIN이 들어와서 에러가 발생하고 말았고,
예외처리를 둘다 해준 후에야 문제를 풀 수 있었다.

#include <limit.h> -> int_max , int_min등을 사용가능하게 한다.

같이 보면 좋을 것 같은 개념 : 2의 보수, overflow

profile
안녕하세요 반가워요!

0개의 댓글