백준 Reverse Text

KIMYEONGJUN·2026년 1월 13일
post-thumbnail

문제

내가 생각했을때 문제에서 원하는부분

The input file contains several test cases.
The first line contains an integer specifying the number of test cases in the file.
Each test case consists of a single line of text which contains at most 70 characters.
However, the newline character at the end of each line is not considered to be part of the line.

For each test case, print a line containing the characters of the input line in reverse order.

내가 이 문제를 보고 생각해본 부분

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));:
BufferedReader 객체를 생성하는 부분이다. 
System.in은 표준 입력을 의미하며, InputStreamReader를 통해 바이트 스트림(System.in)을 문자 스트림으로 변환한 후 BufferedReader가 이 문자 스트림을 효율적으로 읽을 수 있도록 연결해 준다.
int N = Integer.parseInt(br.readLine());:
br.readLine(): BufferedReader를 사용하여 입력의 첫 번째 줄(테스트 케이스의 개수 N)을 읽어온다. readLine() 메소드는 한 줄 전체를 String 타입으로 반환한다.
Integer.parseInt(): 읽어온 String 타입의 N 값을 실제 연산에 사용할 수 있는 int 타입의 정수로 변환한다.
for (int i = 0; i < N; i++) { ... }:
이 for 반복문은 테스트 케이스의 개수 N만큼 반복하여 각 테스트 케이스를 개별적으로 처리한다.
String line = br.readLine();:
반복문이 한 번 실행될 때마다 br.readLine()을 호출하여 현재 테스트 케이스에 해당하는 한 줄의 문자열을 읽어 line 변수에 저장한다.
StringBuilder sb = new StringBuilder(line);:
자바의 String 객체는 한 번 생성되면 그 내용을 변경할 수 없는 immutable (불변) 객체이다. 
따라서 String의 내용을 뒤집거나 수정하려면 StringBuilder 또는 StringBuffer와 같은 mutable (가변) 객체를 사용해야 한다.
StringBuilder는 문자열을 효율적으로 변경하고 조작할 수 있는 기능을 제공하며, 일반적으로 StringBuffer보다 성능이 좋기 때문에 단일 스레드 환경에서 문자열을 자주 변경해야 할 때 선호된다. 
line 문자열을 인자로 넘겨 StringBuilder를 초기화한다.
System.out.println(sb.reverse().toString());:
sb.reverse(): StringBuilder의 reverse() 메소드를 호출하여 sb 객체에 저장된 문자열의 순서를 완전히 뒤집는다. 
이 메소드는 StringBuilder 객체 자체를 반환한다.
.toString(): 뒤집힌 StringBuilder 객체를 최종적으로 String 타입으로 변환한다.
System.out.println(): 변환된 뒤집힌 문자열을 콘솔에 출력합니다. 각 테스트 케이스의 결과는 새로운 줄에 출력된다.
br.close();: 사용이 끝난 BufferedReader를 닫아서 시스템 자원 누수를 방지한다.

코드로 구현

package baekjoon.baekjoon_32;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

// 백준 6438번 문제
public class Main1266 {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        // 첫 줄에서 테스트 케이스의 개수 N을 읽습니다.
        int N = Integer.parseInt(br.readLine());

        // N번 반복하여 각 테스트 케이스를 처리합니다.
        for (int i = 0; i < N; i++) {
            // 한 줄의 텍스트를 읽어옵니다.
            String line = br.readLine();

            // StringBuilder를 사용하여 문자열을 뒤집습니다.
            // String은 불변(Immutable) 객체이므로, 변경이 필요한 경우 StringBuilder 또는 StringBuffer를 사용합니다.
            StringBuilder sb = new StringBuilder(line);

            // reverse() 메소드를 호출하여 문자열을 뒤집고, 다시 toString()으로 String 형태로 변환하여 출력합니다.
            System.out.println(sb.reverse().toString());
        }

        // BufferedReader를 사용했으면 닫아서 자원을 해제합니다.
        br.close();
    }
}

마무리

코드와 설명이 부족할수 있습니다. 코드를 보시고 문제가 있거나 코드 개선이 필요한 부분이 있다면 댓글로 말해주시면 감사한 마음으로 참고해 코드를 수정 하겠습니다.

profile
Junior backend developer

0개의 댓글