[단계별로 풀어보기] 2908번 상수 (문자열)

Jun_Gyu·2023년 4월 4일
0

BackJoon Online Judge

목록 보기
17/18

위의 문제에 대해서 처음에는 아래와 같이 코드를 구성하였다.

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

public class Main {

	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

		StringTokenizer num = new StringTokenizer(br.readLine(), " ");
		int A = Integer.parseInt(num.nextToken());
		int B = Integer.parseInt(num.nextToken());
		int big = 0;

		if (A > B) {
			big = A;
		} else {
			big = B;
		}

		System.out.println(flip(big));

	}

	public static int flip(int big) {
		int result = 0; // 4,
		while (big != 0) { // 734 , 73
			result = result * 10 + big % 10;
			big /= 10;
		}

		return result;
	}
}

먼저 두 수의 크기를 비교하여 더 큰 수를 flip 메소드를 통하여 거꾸로 출력하려고 시도하였다.

하지만, 문제에서는 "뒤집었을때 더 큰수"를 물어본것이므로 아래와 같이 코드를 수정하였다.

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

public class Main {

	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

		StringTokenizer num = new StringTokenizer(br.readLine(), " ");
		int A = Integer.parseInt(new StringBuilder(num.nextToken()).reverse().toString());
		int B = Integer.parseInt(new StringBuilder(num.nextToken()).reverse().toString());
		
		if (A > B) {
			System.out.println(A);
		} else {
			System.out.println(B);
		}
	}

}

StringBuilder란?

StringBuilder는 Java에서 문자열을 처리하는 클래스 중 하나로, 문자열을 동적으로 생성, 수정 및 조작할 수 있도록 지원하는 클래스이다.

일반적인 String 클래스와는 달리 StringBuilder 클래스는 가변적인 크기를 가지므로, 문자열 연산을 수행할 때 매번 새로운 객체를 생성하지 않아도 되므로 메모리 효율성이 높아진다.

이를 이용하여 Token을 거꾸로 뒤집고, 문자열 형태 toString으로 변환한 뒤, 다시 이를 Int형으로 변환하여 각각 A와 B로 구분해주었다.

profile
시작은 미약하지만, 그 끝은 창대하리라

0개의 댓글