문제 링크
https://leetcode.com/problems/reverse-integer/
풀이
전체적인 풀이 과정은 다음과 같다.
- 주어진 수의 마이너스를 제거하고 mod를 활용해 수를 뒤집음
- 제거한 마이너스까지 다시 붙여 뒤집어진 수를 만들고 이 값이 int 범위 내인지 확인
- 범위 확인 결과에 따라 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;
}
}
}
결과
'Algorithm > 코드 풀이' 카테고리의 다른 글
LeetCode: 135번 (Candy) [JAVA] (1) | 2022.06.07 |
---|---|
LeetCode: 4번 (Median of Two Sorted Arrays) [JAVA] (0) | 2022.06.07 |
LeetCode: 238번 (Product of Array Except Self) [JAVA] (0) | 2022.06.02 |
백준: 18808번 (스티커 붙이기) [JAVA] (1) | 2022.05.17 |
백준: 1043번 (거짓말) [JAVA] (0) | 2022.05.17 |