[Algorithm] 백준: 2908 상수 (Java11)

m_ngyeong·2025년 3월 13일
0

Algorithm

목록 보기
5/8
post-thumbnail

2908 상수


reverse()

문제 풀기 앞서,
reverse()은 저장되어 있는 문자열의 순서를 거꾸로 나열하는 메서드이다.
StringBuffer 클래스 또는 StringBuilder 클래스 통해 reverse()를 사용할 수 있다.


문제:

링크: https://www.acmicpc.net/problem/2908

정답:

StringBuilder()

 import java.util.Scanner;

 public class Main{
     public static void main(String[] args){
         Scanner scan = new Scanner(System.in);
 
         int num1 = scan.nextInt();
         int num2 = scan.nextInt();
         
         num1 = Integer.parseInt(new StringBuilder().append(num1).reverse().toString());
         num2 = Integer.parseInt(new StringBuilder().append(num2).reverse().toString());
         
         /*
         int num1 = Integer.parseInt(new StringBuilder(scan.next()).reverse().toString());
         int num2 = Integer.parseInt(new StringBuilder(scan.next()).reverse().toString());
         */
         

         System.out.print(num1 > num2 ?  num1: num2);
     }
 }
  • new StringBuilder(): 문자열을 변경할 수 있도록 제공되는 클래스
  • .append(num): num 값을 StringBuilder에 추가. num이 숫자라면, String.valueOf(num)이 내부적으로 호출되어 문자열로 변환됨
  • .reverse(): StringBuilder 내부의 문자열을 뒤집음(반전)
  • .toString(): StringBuilder를 일반 String으로 변환
  • Integer.parseInt(...): 문자열을 정수(int)로 변환

BufferedReader()

위의 방법과 다른 점은,

  • 문자열 분리를 위해 StringTokenizer를 사용할 수 있음
  • StringBuilder 객체를 생성할 때 append()를 사용하지 않고 직접 문자열을 넣을 수 있음
    StringTokenizer 대신 split() 메서드를 활용하여 String 배열로 분리하는 방법도 가능

결론은 문자열을 분리하여 두 개의 문자열을 얻는다.

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 st = new StringTokenizer(br.readLine()," ");
        
		int num1 = Integer.parseInt(new StringBuilder(st.nextToken()).reverse().toString());
		int num2 = Integer.parseInt(new StringBuilder(st.nextToken()).reverse().toString());
		
		System.out.print(num1 > num2 ?  num1: num2);
	}
}


참고, https://st-lab.tistory.com/66

profile
ʚȉɞ

0개의 댓글