알고리즘(Algorithm)

[Algorithm] 팰린드롬

XDXDX 2023. 5. 30. 13:38

1. 문제

팰린드롬 - 앞에서 읽을 때, 뒤에서 읽을 때 같은 문자열이 출력되는 것

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

 

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

알파벳 이외의 문자들의 무시할 것.

2. 예시

found7, time: study; Yduts; emit, 7Dnuof
-> YES
apple, egg
-> NO

3. 코드

import java.util.Scanner;

public class Case8 {
    public String solution(String str){
        String answer = "NO";

        str = str.toUpperCase().replaceAll("[^A-Z]",""); // 대소문자 구분X
        //예시 - found7, time: study; Yduts; emit, 7Dnuof
        System.out.println(str); // FOUNDTIMESTUDYYDUTSEMITDNUOF
        String tmp = new StringBuilder(str).reverse().toString(); // 문자열 뒤집기
        System.out.println(tmp); // FOUNDTIMESTUDYYDUTSEMITDNUOF
        if(str.equals(tmp)) answer="YES";

        return answer;
    }
    public static void main(String[] args) {
        Case8 case8 = new Case8();
        Scanner in = new Scanner(System.in);
        String str = in.nextLine();

        System.out.println(case8.solution(str));
    }
}
  1. 이번 문제는 회문 검사시, 알파벳으로만 검사하고 대소문자 구분을 하지 않는다.
  2. [^A-Z] -> 정규식 표현으로 알파벳 이외의 문자들은 무시하기 위해 넣은 것
  3. replaceAll은 (= [^A-Z] A~Z 이외의 문자) 들은 ""으로 치환. (위 예시 참조)
  4. 치환된 문자열과 StringBuilder의 reverse를 이용해 문자열은 뒤집은 것과 비교했을 때 같으면 'YES'
  5. 다르면 'NO' 를 리턴한다.

4. 마무리

정규표현식 출처 - https://sooftware.io/regex/

 

정규표현식 (regex)

정규 표현식 정규표현식(regular expression)은 일종의 문자를 표현하는 공식으로, 특정 규칙이 있는 문자열 집합을 추출할 때 자주 사용되는 기법입니다. 주로 Prograaming Language나 Text Editor…

sooftware.io

 

'알고리즘(Algorithm)' 카테고리의 다른 글

[Algorithm] 가장 짧은 문자의 거리  (0) 2023.07.24
[Algorithm] 숫자만 추출  (0) 2023.07.19
[Algorithm] 회문 문자열  (0) 2023.04.03
[Algorithm] 중복문자제거  (0) 2023.03.24
[Algorithm] 특정 문자 뒤집기  (0) 2023.03.23