본문 바로가기

Algorithm/코드 풀이

LeetCode: 7번 (Reverse Integer) [JAVA]

문제 링크

https://leetcode.com/problems/reverse-integer/

 

Reverse Integer - LeetCode

Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.

leetcode.com

풀이

전체적인 풀이 과정은 다음과 같다.

 

  1. 주어진 수의 마이너스를 제거하고 mod를 활용해 수를 뒤집음
  2. 제거한 마이너스까지 다시 붙여 뒤집어진 수를 만들고 이 값이 int 범위 내인지 확인
  3. 범위 확인 결과에 따라 0 또는 뒤집어진 값을 반환

 비교적 간단한 문제이다. 수를 뒤집는 과정을 mod를 사용하여 진행할 거기 때문에 우선 주어진 수 x에서 마이너스를 제거하고, 수를 뒤집은 다음 다시 마이너스 여부에 따라 마이너스를 붙여 최종 뒤집은 수를 만든다. 물론 이때 뒤집은 수가 int 범위를 넘을 수 있기 때문에 미리 long 타입으로 값을 저장하고, 최종적으로 뒤집은 수가 int 범위 내인지 확인해 그 결과에 따라 0 또는 뒤집은 수를 반환한다.

 

class Solution {
    static int MAX_INTEGER_VALUE = 2147483647, MIN_INTEGER_VALUE = -2147483648;
    public int reverse(int x) {
        boolean isMinus = false;
        long reverseX = 0;

        if (x < 0) {
            isMinus = true;
            x = x * -1;
        }

        while (x != 0) {
            reverseX = reverseX * 10 + x % 10;
            x = x / 10;
        }

        if (isMinus) {
            reverseX = reverseX * -1;
        }

        if (reverseX < MIN_INTEGER_VALUE || MAX_INTEGER_VALUE < reverseX) {
            return 0;
        } else {
            return (int) reverseX;
        }
    }
}

결과