1 분 소요

문제 링크 : 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); // 테스트 케이스 번호와 결과 출력
        }
    }
}

댓글남기기