본문 바로가기
Baekjoon 자바 코드/문자열

[백준] 2908번 상수 풀이 코드 (Java 자바)

by 망댕이 2024. 9. 20.
반응형

 

문자열을 뒤집고 두 수의 크기 비교하는 문제이다.

접근 방법)

우선 문자열을 뒤집기 위해서 몇 가지 방법이 존재한다. for문을 이용하여 문자를 하나씩 위치를 거꾸로 배치하는 방법과 StringBuilder 클래스를 이용하는 방법이다.for문을 이용하여 문자열을 뒤집는 방법도 괜찮지만 StringBuilder 클래스의 주요 메소드를 이용하면 문제를 굉장히 쉽게 풀어낼 수 있다. 그렇기 때문에 StringBuilder 클래스와 주요 메소드를 알지 못했다면 이번 기회에 알아놓자.

 

▷ StringBuilder 클래스와 주요 메소드를 이용한 문자열 뒤집기

 

StringBuilder는 문자열에서 문자를 삽입, 붙이기, 제거, 뒤집기등 여러 가지 기능을 할 수 있는 클래스이다.

우리가 사용할 메소드는 reverse()와 toString()이다.

StringBuilder sb = new StringBuilder("문자열");
sb.reverse(); // 열자문
sb.toString(); // sb는 StringBuilder형이기 때문에 String으로 형 변환이 필요

 

이 메소드를 활용해 입력받은 문자열을 뒤집고 다시 String형으로 형 변환을 한 후, Integer.parseInt()를 이용하여 int형으로 형 변환을 하여 두 수의 크기 비교를 하면 된다.

 

StringBuilder의 다른 주요 메소드는 아래 페이지를 통해 알아보자.

 

[JAVA] StringBuilder란 무엇인가? StringBuilder의 주요 메소드 알아보기

| StringBuilder란? StringBuilder는 Java에서 문자열을 효율적으로 처리하기 위한 클래스.문자열을 수정하거나 조작하는 작업을 수행할 때, 문자열을 직접 변경하는 것보다 StringBuilder를 사용하는 것이

mangdang2468.tistory.com

 

정답 코드 1)

import java.util.*;
import java.lang.*;
import java.io.*;

class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String a = sc.next();
        String b = sc.next();

        StringBuilder sb1 = new StringBuilder(a);
        StringBuilder sb2 = new StringBuilder(b);

        int a1 = Integer.parseInt((sb1.reverse()).toString()); // 문자열 뒤집고 형 변환
        int a2 = Integer.parseInt((sb2.reverse()).toString()); // 문자열 뒤집고 형 변환

        if(a1>a2){
            System.out.println(a1);
        }else{
            System.out.println(a2);
        }
    }
}

 

정답 코드 2)

import java.util.*;
import java.io.*;

class Main{
    public static void main(String[] args)throws IOException{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(br.readLine(), " ");
        
        String x = new StringBuilder(st.nextToken()).reverse().toString(); // 문자열 뒤집고 형 변환
        String y = new StringBuilder(st.nextToken()).reverse().toString(); // 문자열 뒤집고 형 변환
        
        int a = Integer.parseInt(x);
		int b = Integer.parseInt(y);
        
        
        System.out.print(a > b ? a : b);
    }
}

정답 코드 3)

import java.util.*;

class Main{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        
        int a = sc.nextInt();
        int b = sc.nextInt();
        String as = Integer.toString(a);
        String bs = Integer.toString(b);
        
        char[] arra = as.toCharArray();
        char[] arra2 = as.toCharArray();
        
        char[] arrb = bs.toCharArray();
        char[] arrb2 = bs.toCharArray();

        for(int i = 0; i < as.length(); i++){ // for문을 이용한 문자열 뒤집기
            arra2[i] = arra[as.length()-i-1];
            
        }
        int aa = (arra2[2]-'0')+((arra2[1]-'0')*10)+((arra2[0]-'0')*100);
        
        for(int i = 0; i < bs.length(); i++){ // for문을 이용한 문자열 뒤집기
            arrb2[i] = arrb[bs.length()-i-1];
        }
        int bb = (arrb2[2]-'0')+((arrb2[1]-'0')*10)+((arrb2[0]-'0')*100);

        if(aa > bb){
            System.out.print(aa);
        }else{
            System.out.print(bb);
        }
    }
}

 

반응형