-
[백준] 2908번 - 숫자 뒤집기(JAVA)코딩테스트/백준 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
반응형'코딩테스트 > 백준' 카테고리의 다른 글
[백준 알고리즘] 단계별로 풀어보기 - 4단계 1차원 배열 JAVA (0) 2023.06.20 [백준 알고리즘] 10811번 바구니 뒤집기 - JAVA (0) 2023.06.20 [백준 알고리즘] 단계별로 풀어보기 - 3단계 반복문 JAVA (0) 2023.06.02 [백준 알고리즘] 단계별로 풀어보기 - 2단계 조건문 JAVA (0) 2023.04.27 [백준 알고리즘] 단계별로 풀어보기 1단계 JAVA (0) 2023.04.14