본문 바로가기

Algorithm/Inflearn

[Inflearn] 자바 알고리즘 문제풀이 #01-08 8. 유효한 팰린드롬

문제

설명

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

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

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

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

 

입력 

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

 

출력

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

 

 

 

코드
import java.util.Scanner;

public class Main1_8 {
    public String Solution(String s) {
        String answer = "NO";
        s = s.toUpperCase().replaceAll("[^A-Z]", ""); // 특수문자 제거
        // replace는 정규식 X, replaceAll은 정규식 O
        // System.out.println(s);
        String revStr = new StringBuilder(s).reverse().toString();
        if(revStr.equals(s)) answer = "YES";
        return answer;
    }

    public static void main(String[] args) {
        Main1_8 T = new Main1_8();
        Scanner sc = new Scanner(System.in);
        String str = sc.nextLine();
        System.out.println(T.Solution(str));
    }
}

 

 

 

결과

 

 

 

알게된 점

1. replace()와 replaceAll()

https://rookie-programmer.tistory.com/21

 

[JAVA] 자바 replace와 replaceAll 차이점 사용법

설명 replace는 문자 -> 문자 혹은 문자열 -> 문자열로 치환해주는 메소드이고 replaceAll은 replace 역할도 하지만, "정규식"을 사용해서 좀 더 효율적으로 문자열을 바꿀 수 있다. 예시 public class example.

rookie-programmer.tistory.com