Tong's Blog

[LeetCode] 7. Reverse Integer 본문

Algorithm/LeetCode

[LeetCode] 7. Reverse Integer

통스 2019. 9. 18. 16:13
반응형

우선 문제의 링크는 https://leetcode.com/problems/reverse-integer/ 이다.

 

단순히 주어진 숫자를 거꾸로 뒤집는 문제인데

처음에 int를 초과하는 input이 주어져서 여러번 틀렸다.

 

첫번째 시도로는 단순히 각자리수를 추출하여 배열로 만들고 다시 자리수를 늘려가며 곱해주는 방식을 취했다.

결과적으로 속도는 0ms로 빠른 편이였지만 코드의 가독성과 불필요한 부분을 생각하면 좋지 못한 코드였다.

 

class Solution {
public:
    int reverse(int x) {
        
        long result = 0;
        
        int temp = x;
        
        vector<int> intVec;
        
        while(temp / 10 != 0){
            intVec.push_back(temp%10);
            temp /= 10;
        } 
        
        intVec.push_back(temp);
        
        long mul = 1;
        for(int i = intVec.size()-1; i >= 0 ; i--){
            result += mul*intVec[i];
            mul *= 10;
            if(result > 2147483647 || result < -2147483648)
                return 0;
        }
        
        return result;
    }
};

 

결과

Runtime: 0 ms, faster than 100.00% of C++ online submissions forReverse Integer.

Memory Usage: 8.5 MB, less than 10.48% of C++ online submissions for Reverse Integer.

 

 

두번째 방식으로 추출과 동시에 바로 reverse되는 수를 만드는 방식을 택했는데,

속도는 0ms로 똑같지만 코드 가독성면에서 훨씬 좋아보였다.

 

class Solution {
public:
    int reverse(int x) {
        
    long res = 0;
    while(x != 0){
        int temp = x%10;
        res = res*10 + temp;
        x /= 10;
    }
        
    if(res > 2147483647 || res < -2147483648){
        return 0;
    }

    	return res;
    }
};

 

결과

Runtime: 0 ms, faster than 100.00% of C++ online submissions for Reverse Integer.

Memory Usage: 8.1 MB, less than 100.00% of C++ online submissions for Reverse Integer.

 

* 언제나 지적과 태클을 환영입니다. 부족하지만 최대한 피드백을 반영하겠습니다.

반응형

'Algorithm > LeetCode' 카테고리의 다른 글

[LeetCode] 1. Two Sum(Swift, C++)  (0) 2020.12.13
[LeetCode] 75. Sort Colors (c++)  (0) 2019.09.21
Comments