알고리즘

[알고리즘]입력받은 숫자를 거꾸로 출력하기(java)

seulhasony 2023. 5. 27. 14:48

입력받은 숫자를 거꾸로 출력하는 문제이다.

 

예)

[입력] 10349 -> [출력] 94301

단, 음수 일 경우는 

[입력] -10349 -> [출력] -94301

 

그래서 첫 번째 코드는 SpringBuffer를 이용해 int를 문자열로 변경하여 reverse()하도록 했다.

그리고 음수일 경우는 -1를 곱하여 음수형태로 만들어 줬다.

import java.util.*;
class Solution {
    public int solution(int num) {
        int answer = 0;
        boolean chk = false;

        if(num < 0){
            num = Math.abs(num);
            chk = true;
        }
        StringBuffer sb = new StringBuffer(String.valueOf(num));
        sb.reverse();

        answer = Integer.parseInt(sb.toString());
        if(chk){
            answer *= -1;
        }

        return answer;
    }
}

그러나 코드가 너무 길고 불필요한 형변환이 너무 많다.

그래서 하기와 같은 코드로 리팩토링 하였다.

import java.util.*;
class Solution {
    public int solution(int num) {
        int answer = 0;
        while(num != 0){
            answer = answer *10  + num %10 ;
            num /= 10;
        }
        return answer;
    }
}

계속해서 10을 나눈 나머지로 뒷자리를 가져와서 뒤집어주는 것이다.

 

숫자를 이용해서 일의자리 십의자리를 가져와서 활용하는 문제는

이렇듯 나머지를 이용해서 가져오는게 바람직한 것 같다.