[백준/초보자] 2908번 - StringBuilder의 문자 교환, reverse() (java)

팥빵·2025년 5월 21일

Baekjoon

목록 보기
12/49


>>문제 바로가기<<

StringBuilder로 문자를 받아 첫번째 자리와 세번째 자리 수를 변환시키는 문제이다.

StringBuilder는 String과 달리, mutable한 함수기 때문에 좀 더 편리하다.

#방법1

StringBuilder에서의 지정된 값의 수정은 다음과 같이 이루어진다.

StringBuilder.setCharAt([바꿀 자리 수], [바꿀 수]);

해당 메소드를 사용하면 손 쉽게 StringBuilder의 값을 수정할 수 있다.

아래는 위 정보를 토대로 설계한 코드이다.

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

class Main{
    public static StringBuilder Cal(StringBuilder sb){
        char temp = sb.charAt(0);
        sb.setCharAt(0, sb.charAt(2));
        sb.setCharAt(2, temp);
        // 리턴 값 불필요. StringBuilder는 "mutable"
    }

    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;
        
        st = new StringTokenizer(br.readLine(), " ");
        StringBuilder sb1 = new StringBuilder(st.nextToken());
        StringBuilder sb2 = new StringBuilder(st.nextToken());
        
        sb1 = Cal(sb1);
        sb2 = Cal(sb2);
        if(Integer.parseInt(sb1.toString()) >= Integer.parseInt(sb2.toString())){
            bw.write(sb1.toString());
        }
        bw.flush();
        br.close();
        bw.close();
    }
}

#방법2

StringBuilder에는 reverse() 메소드가 존재한다.
메소드 이름답게, 문자를 뒤집어주는 기능인데,
아래는 이 정보를 바탕으로 설계한 코드이다.

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

class Main{
    public static String Cal(String s){
        return new StringBuilder(s).reverse().toString();
        // StringBuilder를 바로 만들어 s를 대입하고 뒤집은 후
        // String으로 반환
    }

    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 s1 = Cal(st.nextToken());
        String s2 = Cal(st.nextToken());
        
        bw.write(Integer.parseInt(s1) >= Integer.parseInt(s2) ? s1 : s2);
        bw.flush();
        br.close();
        bw.close();
    }
}

맞았습니다!!

profile
반갑습니다

0개의 댓글