Leetcode Java Reverse Integer
업데이트:
문제
코드
class Solution {
public int reverse(int x) {
int result = 0;
while (x != 0) {
int temp = result * 10 + x % 10;
if (temp / 10 != result) {
return 0;
} else {
result = temp;
x /= 10;
}
}
return result;
}
}
결과
설명
-
주어진 정수 x를 반대로 전환한 결과값을 저장할 result 변수를 선언한다.
- 반복문을 통해 x가 0이 될 때까지 반복을 통해 주어진 정수를 역전시킨다.
- 임시 정수로 사용되는 temp 변수를 선언하여 $result\times10 + \frac{x}{10}$을 통해 정수를 역순으로 생성해준다.
- $\frac{x}{10}$을 통해 주어진 정수의 마지막 자리를 첫 자리로 전환한다. 단 마지막 숫자열이 0인 경우, temp가 0이 되므로 무시된다.
- $result\times10$을 통해 역전시키는 정수의 자릿수를 올려준다.
- 만일 임시 정수로 사용되는 temp변수에 10으로 나눈 값과 result의 값이 다른 경우, 주어진 문제의 결과로 0을 반환한다.
- $result\times10$을 통해 int형의 최솟값(-2,147,483,648)과 최댓값(2,147,483,647)을 돌파할 경우, 값이 초기화되는 점을 활용한다. ($-2147483648\times10{=}0$, $2147483648\times10{=}-10$)
- 위의 이유로 $\frac{temp}{10}의 결과값과 result의 값이 같지 않다면, int형의 범위를 넘어섰으므로 문제에서 예외 케이스로 주어진 경우를 만족하여 0을 결과로 반환한다.
-
3번의 경우가 아닌 경우에는 결과값을 저장하는 result 변수에 임시 정수로 사용되는 temp 변수의 값을 주입하고, x값에 $\frac{x}{10}$의 몫을 저장하고 반복문을 계속 수행한다.
- 반복문이 종료되면 주어진 정수 x를 반대로 전환한 결과값을 저장한 result 변수의 값을 주어진 문제의 결과로 반환한다.
소스
Sample Code는 여기에서 확인 가능합니다.
댓글남기기