문제풀이/String

[JAVA] 백준 2908번 상수 : 문자열 역순 출력

IT록흐 2021. 7. 12. 09:39
반응형
 

2908번: 상수

상근이의 동생 상수는 수학을 정말 못한다. 상수는 숫자를 읽는데 문제가 있다. 이렇게 수학을 못하는 상수를 위해서 상근이는 수의 크기를 비교하는 문제를 내주었다. 상근이는 세 자리 수 두

www.acmicpc.net

 

1. 문제 추상화

 

입력된 두 개 정수를 역순으로 변환 후 크기가 큰 정수를 출력하라.

 

2. 알고리즘

 

첫 번째 방법 

정수 % 10 연산을 사용하여, 1의 자리 수부터 역순으로 String 변수에 붙이기

 

두 번째 방법

API 이용하기 (StringBuilder 클래스)

 

3. 풀이

 

첫 번째 방법

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.StringTokenizer;

public class Main {
	// 내 풀이
	public static void main(String[] args) throws IOException {
		
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
		StringTokenizer stz;
		
		stz = new StringTokenizer(br.readLine()," ");
		
		String a = stz.nextToken();
		String b = stz.nextToken();
        
		// 정수문자열 역순 변환 메소드 호출
		String reverseA = reverseValue(a);
		String reverseB = reverseValue(b);
		
		if(Integer.parseInt(reverseA) >= Integer.parseInt(reverseB)) {
			bw.write(reverseA);
		}else {
			bw.write(reverseB);
		}
		
		bw.flush();
		bw.close();
		br.close();
	}
    
	// 정수문자열 역순 변환 메소드
	public static String reverseValue(String value) {
		
		int data = Integer.parseInt(value);
		String result = "";
		
		while(data > 0) {
			int decimal = data % 10; // 10으로 나눈 나머지 
			result += decimal; // 1의 자리부터 붙이기
			data /= 10; 
		}
		return result;
	}

}

 

두 번째 방법

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.StringTokenizer;

public class Main {

	public static void main(String[] args) throws IOException {
		// TODO Auto-generated method stub
		// API 이용한 풀이
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
		StringTokenizer stz;
		
		stz = new StringTokenizer(br.readLine()," ");
		
		String a = stz.nextToken();
		String b = stz.nextToken();
		
        // API 이용( StringBuilder 객체의 reverse() 메소드 사용 )
		int reverseA = Integer.parseInt(new StringBuilder().append(a).reverse().toString());
		int reverseB = Integer.parseInt(new StringBuilder().append(b).reverse().toString());
		
		bw.write((reverseA >= reverseB ? reverseA : reverseB)+"");
		bw.flush();
		bw.close();
		br.close();
	}

}
반응형