공log/[P&B]

[P&B] #56 BAEKJOON 2908

ming_OoO 2023. 9. 17. 23:45
728x90

백준 2908번 상수

문제 설명

상근이의 동생 상수는 수학을 정말 못한다. 상수는 숫자를 읽는데 문제가 있다. 이렇게 수학을 못하는 상수를 위해서 상근이는 수의 크기를 비교하는 문제를 내주었다. 상근이는 세 자리 수 두 개를 칠판에 써주었다. 그 다음에 크기가 큰 수를 말해보라고 했다.

상수는 수를 다른 사람과 다르게 거꾸로 읽는다. 예를 들어, 734와 893을 칠판에 적었다면, 상수는 이 수를 437과 398로 읽는다. 따라서, 상수는 두 수중 큰 수인 437을 큰 수라고 말할 것이다.

두 수가 주어졌을 때, 상수의 대답을 출력하는 프로그램을 작성하시오.

 

입력

첫째 줄에 상근이가 칠판에 적은 두 수 A와 B가 주어진다. 두 수는 같지 않은 세 자리 수이며, 0이 포함되어 있지 않다.

 

출력

첫째 줄에 상수의 대답을 출력한다.

 

나의 문제 풀이 코드

import java.util.*;
import java.io.*;
public class bj2908 {
    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 st = new StringTokenizer(br.readLine());

        String A = st.nextToken();
        String B = st.nextToken();

        String nA = "";
        String nB = "";
        for (int i = 2; i >= 0 ; i--) {
            nA += A.charAt(i);
            nB += B.charAt(i);
        }

        int numA = Integer.parseInt(nA);
        int numB = Integer.parseInt(nB);

        bw.write(String.valueOf(Math.max(numA,numB)));
        bw.flush();
    }
}

 

문제 풀이 코멘트

위에서는 숫자문자열을 거꾸로 저장하기위해 1차원 배열을 사용했지만 아래와 같이 쓰면 조금 더 가독성을 높일 수 있다.

private static String reverseString(String str) {
        StringBuilder reversed = new StringBuilder();
        
        for (int i = str.length() - 1; i >= 0; i--) {
            reversed.append(str.charAt(i));
        }
        
        return reversed.toString();
}

StringBuilder는 Java에서 문자열을 효율적으로 다루기 위한 클래스입니다. 문자열 연산을 수행할 때 마다 새로운 문자열을 생성하는 것이 아니라, 기존 문자열을 변경하고 조작할 수 있게 해줍니다. 이로 인해 문자열 연산의 성능을 향상시킬 수 있습니다.

 

StringBuilder 클래스의 주요 특징

  • 가변성 (Mutable): StringBuilder는 가변적인 문자열을 저장할 수 있는 클래스입니다. 문자열을 생성한 후에도 그 값을 변경하거나 추가할 수 있습니다.
  • 성능 개선: 문자열 연산이 자주 발생할 때 StringBuilder를 사용하면 성능이 향상됩니다. 이유는 StringBuilder는 내부 버퍼에 문자열을 저장하고, 문자열을 조작할 때 새로운 문자열 객체를 생성하는 것이 아니라 기존 버퍼를 활용하기 때문입니다.
  • 메서드 제공: StringBuilder 클래스는 문자열을 조작하기 위한 다양한 메서드를 제공합니다. 예를 들어, 문자열을 추가하거나 삭제하고, 문자열을 뒤집는 등의 작업을 수행할 수 있습니다.
    • .append(문자열 추가 ), .insert(문자열 삽입), .delete(문자열 삭제), .reverse(문자열 뒤집기)
728x90
댓글수0