문제 

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 [-2^31, 2^31 - 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:

  • -2^31 <= x <= 2^31 - 1

 

 

코드1 - TryParse

public class Solution {
    public int Reverse(int x) {
        char[] reverse = x.ToString().ToCharArray().Reverse().ToArray();
        string answerStr = new string(reverse);
        if(x<0) {
            answerStr = '-'+answerStr.Remove(answerStr.Length-1);
        }
        
        int answer;

        if (Int32.TryParse(answerStr, out answer))
            return answer;
        else
            return 0;
    }
}



 

코드2 - Convert.ToInt

public class Solution {
    public int Reverse(int x) {
        char[] reverse = x.ToString().ToCharArray().Reverse().ToArray();
        string answer = new string(reverse);
        if(x<0) {
            answer = '-'+answer.Remove(answer.Length-1);
        }
        try{
            return Convert.ToInt32(answer);
        }
        catch{
            return 0;
        }
    }
}

 

 

설명: 

코드1과 코드2는 전반적으로 같지만, int로 형변환을 TryParse로 했는지 Convert.ToInt로 했는지의 차이다. 

그리고 문제에서 뒤집은 숫자가 32-bit integers 범위를 벗어나면 0을 반환하라는 조건이 주어졌기 때문에

TryParse를 사용한 코드1에선 if-else문으로, Convert.ToInt를 사용한 코드2에선 try-catch문으로 숫자가 범위를 벗어난 경우에 0를 반환했다. 

 

 

+ Recent posts