초심자의 회문 검사
문제 링크 : https://swexpertacademy.com/main/code/problem/problemDetail.do?problemLevel=2&contestProbId=AV5PyTLqAf4DFAUq&categoryId=AV5PyTLqAf4DFAUq&categoryType=CODE&problemTitle=&orderBy=FIRST_REG_DATETIME&selectCodeLang=ALL&select-1=2&pageSize=10&pageIndex=1
문제 제목 : 초심자의 회문 검사
“level” 과 같이 거꾸로 읽어도 제대로 읽은 것과 같은 문장이나 낱말을 회문(回文, palindrome)이라 한다.
단어를 입력 받아 회문이면 1을 출력하고, 아니라면 0을 출력하는 프로그램을 작성하라.
[제약 사항]
각 단어의 길이는 3 이상 10 이하이다.
[입력]
가장 첫 줄에는 테스트 케이스의 개수 T가 주어지고, 그 아래로 각 테스트 케이스가 주어진다.
각 테스트 케이스의 첫 번째 줄에 하나의 단어가 주어진다.
[출력]
출력의 각 줄은 ‘#t’로 시작하고, 공백을 한 칸 둔 다음 정답을 출력한다.
(t는 테스트 케이스의 번호를 의미하며 1부터 시작한다.)
입력
3
level
samsung
eye
input.txt 출력 #1 1 #2 0 #3 1
output.txt
문제 풀이
import java.util.*; // 자바 유틸 패키지 전체를 가져옵니다.
class Solution // Solution 클래스 정의
{
public static void main(String args[]) throws Exception // 메인 메소드, 예외 처리 가능
{
Scanner sc = new Scanner(System.in); // 사용자 입력을 받기 위한 Scanner 객체 생성
int T; // 테스트 케이스의 수를 저장할 변수 T
T = sc.nextInt(); // 사용자로부터 테스트 케이스 수 입력 받기
for(int t = 1; t <= T; t++) { // 1부터 T까지 반복, 각 테스트 케이스 처리
String str = sc.next(); // 각 테스트 케이스의 문자열 입력 받기
int result = 1; // 기본 결과를 1로 설정 (회문이라고 가정)
for(int i = 0; i < str.length() / 2 + 1; i++) { // 문자열의 절반 길이만큼 반복
if(str.charAt(i) != str.charAt(str.length() - i - 1)) { // 좌우 대칭 위치의 문자 비교
result = 0; // 다르면 회문이 아니므로 결과를 0으로 설정
break; // 차이를 발견하면 더 이상 검사할 필요 없으므로 반복문 탈출
}
}
System.out.println("#" + t + " " + result); // 테스트 케이스 번호와 결과 출력
}
}
}
댓글남기기