본문 바로가기

알고리즘/코드 연습

[LeetCode] Reverse Integer

반응형

32-bit의 부호가 있는(signed)정수가 주어진다. 이정수를 reverse해서 출력해라.

 

EX)

input : 123

output : 321

 

input : -123

output : -321

 

정수를 10으로 나눈 나머지는 그 정수의 일의 자리를 반환한다.

 

123%10 = 3

 

정수를 10으로 나눈 몫은 일의자리를 제외한 나머지를 반환한다.

 

123 / 10 = 12

 

위의 값을 적절히 이용하면 reverse를 할 수 있다.

 

여기서 주의할 점은 Integer값의 범위이다.

종류 타입 크기 범위(최소 ~ 최대)
boolean 논리값 1 bit true / false
byte 부호 있는 정수 8 bits -128 ~ 127
char 유니코드 문자 16 bits \u0000 ~ \uFFFF
short 부호 있는 정수 16 bits -32768 ~ 32767
int 부호 있는 정수 32 bits -2147483648 ~ 2147483647
ong 부호 있는 정수 64 bits -9223372036854775808 ~ 9223372036854775807
float IEEE 754 실수 32 bits 1.40239846E-45f
                                          ~ (표현 가능 양수 범위)
                                          3.40282347E+38f
double IEEE 754 실수 64 bits  4.94065645841246544E-324
                                          ~ (표현 가능 양수 범위)
                                          1.79769313486231570E+308

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
class Solution {
 
    public int reverse(int x) {
        int rev = 0;
        while (x != 0) {
            int pop = x % 10;
            x /= 10;
            if (rev > Integer.MAX_VALUE/10 || (rev == Integer.MAX_VALUE / 10 && pop > 7)) return 0;
            if (rev < Integer.MIN_VALUE/10 || (rev == Integer.MIN_VALUE / 10 && pop < -8)) return 0;
            rev = rev * 10 + pop;
        }
        return rev;
    }
}
cs

 

 

출처 : https://leetcode.com/problems/reverse-integer/submissions/

반응형

'알고리즘 > 코드 연습' 카테고리의 다른 글

[백준 - 1924] 2007년  (0) 2020.07.29
[백준 - 2798] 블랙잭  (0) 2020.07.24
[LeetCode] Roman to Integer  (0) 2020.07.21
[LeetCode] Palindrome Number  (0) 2020.07.20
[LeetCode] Two Sum  (0) 2020.07.20