1-8 유효한 팰린드롬 (Java)

정우·2022년 9월 25일

✏ 문제


설명

앞에서 읽을 때나 뒤에서 읽을 때나 같은 문자열을 팰린드롬이라고 합니다.

문자열이 입력되면 해당 문자열이 팰린드롬이면 "YES", 아니면 “NO"를 출력하는 프로그램을 작성하세요.

단 회문을 검사할 때 알파벳만 가지고 회문을 검사하며, 대소문자를 구분하지 않습니다.

알파벳 이외의 문자들의 무시합니다.

입력

첫 줄에 길이 100을 넘지 않는 공백이 없는 문자열이 주어집니다.

출력

첫 번째 줄에 팰린드롬인지의 결과를 YES 또는 NO로 출력합니다.


✏ 문제

import java.util.Scanner;

class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String str = sc.nextLine();
        System.out.println(solution(str));
    }
    
    public static String solution(String str) {
        str = str.toUpperCase().replaceAll("[^A-Z]", "");
        String sb = new StringBuilder(str).reverse().toString();
        if (str.equals(sb)) {
            return "YES";
        }
        else {
            return "NO";
        }
    }
}

예시입력인 found7, time: study; Yduts; emit, 7Dnuof 를 보면 문자 외에 , : 같은 특수 기호들이 있다.

문제에서는 알파벳 외에 모든 문자들은 무시하기 때문에 우선 해당 문자들을 제거하는 작업을 수행해야한다.

우선 문자열의 대소문자 구분이 없기때문에 .toUpperCase() 를 통해서 대문자화 하고 .replaceAll() 메소드를 사용했다.

정리

.replaceAll() : String안에서 특정 문자들을 대체해준다.

예시

String str = "Apple";
System.out.println(str.replaceAll("[p]", "A"));

// 결과
// AAAle

[ ] 안에 변환할 문자를 입력. A-Z 같이 범위도 가능.
^는 부정이다.

String str1 = "ABCDEFG";
System.out.println(str1.replaceAll("[A-C]", "F"));

// 결과
// FFFDEFG
profile
That's it

0개의 댓글