내가 생각했을때 문제에서 원하는부분
첫째 줄에 테스트 케이스의 개수 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();
}
}
코드와 설명이 부족할수 있습니다. 코드를 보시고 문제가 있거나 코드 개선이 필요한 부분이 있다면 댓글로 말해주시면 감사한 마음으로 참고해 코드를 수정 하겠습니다.