세자리 수의 수가 첫 줄에 두개 주어집니다. 두 수는 공백으로 구분이 됩니다.
예제를 보면 734 893 이 들어옵니다.
A 라는 수가 734고 B라는 수가 893가 됩니다.
734인 A를 거꾸로 437을 만들고 B도 398을 만듭니다.
그리고 이 두 수를 비교해서 큰 수를 출력하면 되는 문제입니다.
import java.util.Scanner;
class Main {
public static void main(String args[]) {
Scanner sc = new Scanner(System.in);
int A = sc.nextInt();
int B = sc.nextInt();
int TmpA = 0;
int TmpB = 0;
int c = 100;
while(A!=0 && B!=0){
TmpA += A%10*c;
TmpB += B%10*c;
A/=10;
B/=10;
c/=10;
}
System.out.println(TmpA>TmpB ? TmpA:TmpB);
}
}
스캐너로 입력을 받았습니다.
A와 B를 입력받고 TmpA, TmpB, c를 초기화 시켜줍니다.
TmpA와 TmpB는 거꾸로 만들어진 수가 들어갈 변수입니다.
c는 수를 거꾸로 만들기 위해 사용될 변수입니다.
핵심 로직입니다.
A와 B가 0이면 멈추도록 반복해줍니다.
반복문은 while을 사용했습니다.
먼저 A와B를 거꾸로 만드는 방법은 같습니다.
왜냐면 두 수는 세 자리 수로 정해져있고 0이 포함되어 있지 않기 때문입니다.
예를 들어 설명해드리겠습니다.
A는 734입니다.
734를 % 10 을 하면 나머지인 4가 남습니다. 거기에 c가 100이니 100을 곱해서 400이됩니다.
그럼 TmpA는 400이 됩니다.
A를 10으로 나눕니다. 몫인 73이 A가 됩니다.
c를 10으로 나눕니다. 100을 10으로 나누었으니 10이 됩니다.
다시 A인 73을 10으로 나눕니다. 나머지인 3과 c값인 10을 곱합니다.
그럼 10의 자리수인 30 이 만들어집니다.
똑같이 반복합니다. 그러면 일의 자리 수인 7이 만들어집니다.
TmpA는 437이 됩니다.
이렇게 B도 똑같습니다.
그럼 734와 893은 437과 398이 되었습니다.
삼항 연산자를 통해 큰 수를 출력해줍니다.
변수 c 대신해서
Math.pow()로 자리수를 곱해주어도 됩니다.
StringBuffer().reverse()를 사용하는 방법도 있습니다.
A를 StringBuffer에 저장하고 reverse()로 거꾸로 만들 수 있습니다.
'알고리즘 with JAVA' 카테고리의 다른 글
백준 2941 크로아티아 알파벳 - 자바 (0) | 2021.04.13 |
---|---|
백준 5622번 다이얼 - 자바 (0) | 2021.04.12 |
백준 1152번 단어의 개수 - 자바 (0) | 2021.04.11 |
백준 1157번 단어 공부 - 자바 (0) | 2021.04.09 |
백준 2675번 문자열 반복 - 자바 (0) | 2021.04.08 |