상세 컨텐츠

본문 제목

JAVA. 백준 알고리즘 단계별 문제 7단계(문제 번호 2908)

공-부/백준 알고리즘

by 사랑짱 2021. 6. 4. 20:00

본문

(문제번호 2908)

두 개의 세자리 수가 주어졌을 때 거꾸로 읽어 큰 수를 출력하는 프로그램을 작성하시오.

 

 

문제 해결 포인트

두 개의 수를 역순으로 읽은 뒤 크기를 비교하여 큰 수를 출력해야 한다.

단순히 각 자리 수를 읽어 역순으로 10의 배수를 해주는 방법이 있고,

StringBuilder 의 reverse() 메소드를 이용하여 문자를 뒤집어 읽는 방법이 있다.

후자가 더 효율적일 것 같으나 비교를 위해 두 가지 방법으로 다 작성해보자.

 


문제 해결 과정

첫번째 방법, Scanner로 입력받아 역순으로 출력하기

1. Scanner를 통해 두 개의 수 a, b를 입력받는다.

2. 입력받은 두 개의 수의 각 자리를 거꾸로 valueA/valueB 변수에 저장한다.

   ( EX. 일의 자리*100 + 십의 자리*10 + 백의 자리*1 )  

3. 삼항 연산식을 이용하여 두 수를 비교하여 큰 수를 출력한다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import java.util.Scanner;
 
 
public class No07 {
 
    
    public static void main(String[] args)  {
        Scanner sc = new Scanner(System.in);
        
        int a = sc.nextInt();
        int b = sc.nextInt();
 
        int valueA = (a%10)*100 + ((a/10)%10)*10 + a/100;
        int valueB = (b%10)*100 + ((b/10)%10)*10 + b/100;
        
        int max = (valueA > valueB) ? valueA : valueB;
 
        System.out.println(max);
        
    }    //main
    
}    //class
 
cs

 

 


 

두번째 방법, StringBuilder 의 reverse( )메소드를 이용하기

1. BufferedReader를 생성한다.

2. BufferedReader.readLine은 한줄로 값을 저장하므로 StringTokenizer으로 공백으로 값을 구분한다.

3. StringBuilder 생성과 동시에 토큰에 저장된 값을 reverse( )메소드로 저장되어있는 숫자를 뒤집는다.

4. 뒤집은 값은 int A, int B에 각각 저장한다.

5. 삼항연산자를 통해 더 큰 수를 출력한다.

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
 
public class No07_2 {
 
    
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    
        StringTokenizer st = new StringTokenizer(br.readLine(), " ");
    
        int A = Integer.parseInt(new StringBuilder(st.nextToken()).reverse().toString());
        int B = Integer.parseInt(new StringBuilder(st.nextToken()).reverse().toString());
 
        System.out.print(A > B ? A : B);
        
    }    //main
    
}    //class
 
cs

 

 

관련글 더보기