공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