Problem
Given a signed 32-bit integer x, return x with its digits reversed. If reversing x causes the value to go outside the signed 32-bit integer range [-231, 231 - 1], then return 0.
Assume the environment does not allow you to store 64-bit integers (signed or unsigned).
Example 1:
Input: x = 123
Output: 321
Example 2:
Input: x = -123
Output: -321
Example 3:
Input: x = 120
Output: 21
Example 4:
Input: x = 0
Output: 0
Constraints:
- -231 <= x <= 231 - 1
How to solve
정수 x를 거꾸로 출력하는 문제이다.
정수 x의 부호를 저장해 놓고, 절대 값을 씌운 정수의 마지막 숫자부터 reversing한다.
1. 결과 값을 담을 변수 선언
long long int res = 0;
2. input 정수 x의 부호를 저장
int minus_flag = (x>0 ? 1 : -1);
3. 정수 x 의 절대값을 저장
long long int abs_x = abs(x);
4. abs_x 이 >0 보다 큰 경우 while문을 돌면서, reversing 한다.
1) abs_x%10 은 abs_x의 맨 뒷자리를 가져온다.
즉, 321%10 = 1 이다.
2) res*10 후 1)에서 구한 abs_x의 맨 뒷자리를 더해준다.
res = res*10 + num;
Solution(c++)
#include <bits/stdc++.h>
class Solution {
public:
int reverse(int x) {
long long int res = 0;
int minus_flag = (x>0 ? 1 : -1);
int abs_x = abs(x);
while( abs_x > 0 ){
long long int num = abs_x%10;
abs_x /= 10;
res = res*10 + num;
if(res > INT_MAX){
return 0;
}
}
res *= minus_flag;
return res;
}
};
Test Result
'SW > 알고리즘 문제풀이' 카테고리의 다른 글
[leetcode] Integer to Roman (c++) (0) | 2021.03.21 |
---|---|
[leetcode] Roman to Integer (c++) (0) | 2021.03.06 |
[Codility] Lesson16 - Greedy algorithms: TieRopes (0) | 2021.02.25 |
[Codility] Lesson15 - Caterpillar method: Abs Distinct (1) | 2021.02.15 |
[Codility] Lesson16 - Greedy algorithms: Max Nonoverlapping Segments (1) | 2021.02.10 |
댓글