문제 설명
주어진 정수 num의 자릿수를 거꾸로 뒤집어 반환해 주세요.
num이 음의 정수인 경우 - 부호는 그대로 유지해 주세요.
단, 결괏값이 100,000 이상이거나, -100,000 이하인 경우 0을 출력하세요.
입력 형식
· num : 정수
출력 형식
· num의 자릿수를 거꾸로 뒤집은 정수 반환
제약 사항
· -1000000 <= n <= 1000000
입출력 예시
· 예시1
· 입력
· n = 340
· 출력 : 43
· 설명 : 340의 자릿수를 거꾸로 뒤집으면 043이 된다. 여기서 leading zero(앞에 붙은 0)를 제외한 43이 답이 된다.
· 예시2
· 입력
· n = -587
· 출력 : -785
· 설명 : 음수의 경우, 음의 부호는 그대로 두고 나머지 자릿수만 뒤집는다.
작성 코드
public class Solution225 {
public int solution(int num) {
boolean minus = false;
if (num < 0) {
minus = true;
num = -num;
}
String str = Integer.toString(num); // 입력 받은 숫자를 문자열로 변환
String result = new StringBuilder(str).reverse().toString(); // 문자열을 뒤집음
if (result.charAt(0) == '0') {
result = result.substring(1);
}
int resultNum = Integer.parseInt(result); // 뒤집힌 문자열 다시 숫자로 변환
if (minus) { // 입력받은 숫자가 음수였다면
resultNum = -resultNum; // 결과는 다시 음수로 변환
}
if (resultNum >= 100000 || resultNum <= -100000) {
return 0;
}
return resultNum;
}
public static void main(String[] args) {
Solution225 st = new Solution225();
int num = 340;
System.out.println(st.solution(num)); // 43
int num2 = -587;
System.out.println(st.solution(num2)); // -785
}
}
정답 코드
class Solution {
int MAX_NUM = 100_000;
public int solution(int num) {
boolean isNegative = num < 0;
if (isNegative) {
num *= -1;
}
int i = num;
int result = 0;
while (i > 0) {
result = (result * 10) + (i % 10);
i = i / 10;
}
if (MAX_NUM < result) {
return 0;
}
return isNegative ? -result : result;
}
public static void main(String[] args) {
Solution st = new Solution();
int num = 340;
System.out.println(st.solution(num)); // 43
int num2 = -587;
System.out.println(st.solution(num2)); // -785
}
}
'연습 코딩테스트' 카테고리의 다른 글
연습문제 2-3(2) 잘못된 출석부 번호 반환 (0) | 2023.04.06 |
---|---|
연습문제 2-3(1) s에 포함된 횟수가 많은 순서대로 적힌 문자열 반환 (0) | 2023.04.06 |
연습문제 2-2(4) 술래가 빼간 구슬의 번호 (0) | 2023.04.06 |
연습문제 2-2(3) n 이하인 세제곱 수 (0) | 2023.04.06 |
연습문제 2-2(2) 정수 배열 요소 반복(홀수 1회) shift (0) | 2023.04.06 |