입력받은 숫자를 거꾸로 출력하는 문제이다.
예)
[입력] 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을 나눈 나머지로 뒷자리를 가져와서 뒤집어주는 것이다.
숫자를 이용해서 일의자리 십의자리를 가져와서 활용하는 문제는
이렇듯 나머지를 이용해서 가져오는게 바람직한 것 같다.
'알고리즘' 카테고리의 다른 글
| [알고리즘]프로그래머스-추억점수(2차원 배열과 해시테이블의 합작)_java (2) | 2023.05.29 |
|---|---|
| [알고리즘]프로그래머스 - 최빈값 구하기(HashMap을 곁들인) (0) | 2023.05.29 |
| [알고리즘]프로그래머스-한 번만 등장한 문자(해시테이블을 곁들인,List의 정렬 방법) (0) | 2023.05.29 |
| [알고리즘]int형 배열의 내림차순과 오름차순(feat.Integer형 배열으로 변환) (2) | 2023.05.29 |
| [알고리즘] 동일한 숫자 개수 세기(+동일한 문자의 개수) (0) | 2023.05.29 |