ezhoon

[인프런] 01-08 유효한 팰린드롬 본문

[Java] 인프런 문제풀이/Stirng(문자열)

[인프런] 01-08 유효한 팰린드롬

ezhoon 2022. 1. 19. 23:40

문제


  1. 문자열이 입력되면 해당 문자열이 팰린드롬이면 "YES" 아니면 "NO"를 출력하는 프로그램을 만드시오
  2. 알파벳만 가지고 회문을 검사하며 대소문자는 구분하지 않는다.
  3. 알파벳 이외의 문자들은 무시한다.

예시 출력 화면 

이해


우리 말로 ‘회문(回文)’으로 번역되며, 'eye' madam'처럼 역순으로 읽어도 같은 말이나 구절 또는 숫자를 말한다.
  • 대소문자를 구분하지 않는다고 했으니 입력받은 문자열을 toUpperCase(), toLowerCase() 둘 중에 아무거나 사용해서 대소문자 통일시켜 줘야 할 것 같다.
  • 알파벳이 아닌 특수문자들도 들어오니 알파벳들만 남을 수 있게끔 아래 처럼 해주면 될 것 같다.
    replaceAll("[^A-Z]","")​

 

 

 

⚠️ 주의사항


  • 대소문자 통일
  • 알파벳이 아니면 무시할 것

 

 

 

문제풀이


import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Java01_08 {

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

        StringBuilder sb = new StringBuilder();

        str = str.toUpperCase().replaceAll("[^A-Z]",""); // A-Z가 아니면 빈 공간으로 만들어준다.
        String tmp = new StringBuilder(str).reverse().toString(); // 반대에서부터 확인 하기 위한 str의 reverse 된 값 생성

        if(str.equals(tmp)) { // str을 거꾸로 뒤집은 tmp와 같은지 확인
            answer = "YES";
            sb.append(answer);
        }

        return sb.toString();
    }
    public static void main(String[] args) throws IOException {

        Java01_08 T = new Java01_08();

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String str = br.readLine();

        System.out.println(T.solution(str));
    }
}

 


출력 화면 

Comments