백준 팰린드롬

KIMYEONGJUN·5일 전
0
post-thumbnail

문제

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

첫째 줄에 테스트 케이스의 개수 n이 주어진다.
각 테스트 케이스는 한 줄의 텍스트로 이루어져있으며, 최대 18글자로 이루어져 있다.
비어있는 줄은 없다.

각 테스트 케이스에 대해 정답을 출력한다.
팰린드롬일 경우 "Yes"를 출력하고, 그렇지 않을 경우 "No"를 출력한다.

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

BufferedReader를 사용해 표준 입력을 효율적으로 읽는다..
첫 줄에서 테스트 케이스 개수 n을 정수로 읽어온다.
for 반복문을 통해 n개의 문자열을 순차적으로 입력받는다.
대소문자 통일
읽은 한 줄 문자열을 toLowerCase() 메서드로 모두 소문자로 변환하다.
문제에서 대소문자는 구분하지 않으므로 대문자와 소문자를 동일하게 취급하기 위해서이다.
팰린드롬 판별
변환된 문자열을 StringBuilder에 넣고 reverse() 메서드로 뒤집은 후 문자열로 변환한다.
원래 소문자 변환된 문자열과 뒤집은 문자열을 equals()로 비교한다.
같으면 팰린드롬이므로 "Yes"를 출력하고, 다르면 "No"를 출력한다.
반복 종료 및 자원 정리
모든 테스트 케이스에 대해 판별을 마친 후 BufferedReader를 닫아 자원을 정리한다.

코드로 구현

package baekjoon.baekjoon_30;

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

// 백준 10174번 문제
public class Main1161 {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int n = Integer.parseInt(br.readLine());

        for(int i = 0; i < n; i++) {
            String line = br.readLine();
            String lower = line.toLowerCase(); // 대소문자 통일

            // 문자열을 뒤집기
            String reversed = new StringBuilder(lower).reverse().toString();

            if(lower.equals(reversed)) {
                System.out.println("Yes");
            } else {
                System.out.println("No");
            }
        }

        br.close();
    }
}

마무리

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

profile
Junior backend developer

0개의 댓글