코딩테스트/백준
[백준] 2908번 - 숫자 뒤집기(JAVA)
s워니얌
2023. 7. 7. 16:45
백준 2908번 문제는 입력받은 숫자를 뒤집어야 되는 문제이다.
https://www.acmicpc.net/problem/2908
숫자를 뒤집을 수 있는 방법은 뭐가있을까? 일단 내가 풀어본 정답이다.
📑 정답 1번
754라는 숫자를 받았을때 이 숫자의 나머지를 먼저 구한다. 그 나머지를 임의의수에 저장해두고 거꾸로 바꿔야할 자리수를 생각해본 후 10의 배수를 곱해준다.
예를들어 4라는 숫자는 거꾸로 바꿨을 시 백의자리 즉 457이라는 수를 만들기 위해 백의자리로 가야한다. 그렇기에 4 * 100을 해주고 임의의수에 저장한다.
위의 방식을 3번 반복하면 400 + 50 + 7을 만들어서 457이라는 수를 출력한다.
package step5;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Q8_숫자뒤집기 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
int a = Integer.parseInt(st.nextToken()); //첫번째 숫자
int b = Integer.parseInt(st.nextToken()); //두번째 숫자
int max = 0;
a = reverseNumber(a);
b = reverseNumber(b);
System.out.println(Math.max(a, b));
}
/**
* 5432 % 10 = 2
* 543 % 10 = 3
* 54 % 10 = 4
*
*/
public static int reverseNumber(int inputNum){
int reNum =0;
for(int i=2; i>=0; i--){
int remainNum = inputNum%10;
reNum += (int)(remainNum * Math.pow(10, i));
inputNum= inputNum/10;
}
return reNum;
}
}
📑 정답 2번
package step5;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;
public class Q8_2908 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
int num1 = Integer.parseInt(new StringBuilder(st.nextToken()).reverse().toString());
int num2 = Integer.parseInt(new StringBuilder(st.nextToken()).reverse().toString());
System.out.println(num1>num2?num1:num2);
}
}
StringBuilder의 메서드 reverse()를 사용하였다. String은 불변 클래스, 다른 StringBuffer와 StringBuilder 클래스는 가변 클래스이다. 아래 포스팅 설명에 더 자세히 나와있다.
StringBuilder 클래스는 문자열을 수정하거나 조작하기 위한 유틸리티 클래스이며, 문자열을 직접 수정할 수 있는 가변 문자열 버퍼를 제공해준다. 따라서 reverse를 이용해 간단하게 문자열의 앞뒤를 바꾼 후 이를 int형으로 형변환해서 크기가 큰 수를 알아낼 수 있다.
https://wonisdaily.tistory.com/236
반응형