본문 바로가기

CodingTest Practice

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

유효한 팰린드롬

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

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

 

■ 문제 풀이

1) 입력 설명
- 회문을 검사할 때 알파벳만 가지고 회문을 검사
- 대소문자를 구분하지 않음, 알파벳 이외의 문자들은 무시
- 첫 줄에 길이 100을 넘지 않는다.

2) 출력 설명
- 팰린드롬인 경우 YES를 아닌경우 NO를 반환한다.

3) 테스트
- input : found7, timk: study; Yduts; emit, 7Dnuof / output : NO
- input : a sd fg #%hjkl; %#$@! lkj&*hgfd s ##a / output : YES
- input : kdjg$@kjkldjkg%@dkjgkj / output : NO

4) 문제 풀이
- 정규표현식을 사용하여 대소문자 이외의 값들은 제거
- String 클래스의 equalsIgnoreCase() 함수는 비교 대상의 두 문자열의 대소문자는 상관없이 비교를 하여 같으면 true, 다르면 false를 반환

 

import java.util.Scanner;

public class Main {

    private String solution(String input) {
        String answer = "NO";

        //대소문자 구분하지 않음
        input = input.toLowerCase();
        input = input.replaceAll("[^a-z]", "");

        StringBuilder stringBuilder = new StringBuilder(input);
        String reverse = stringBuilder.reverse().toString();

        if (input.equals(reverse)) {
            answer = "YES";
        }
        return answer;
    }


    public static void main(String[] args) {
        Main main = new Main();
        Scanner scanner = new Scanner(System.in);
        String input = scanner.nextLine();

        System.out.println(main.solution(input));
        return;
    }
}

 

'CodingTest Practice' 카테고리의 다른 글

[인프런] 가장 짧은 문자 거리  (0) 2022.04.05
[인프런] 숫자만 추출  (0) 2022.04.03
[인프런] 회문 문자열  (0) 2022.04.03
[인프런] 중복문자제거  (0) 2022.04.02
[인프런] 특정 문자 뒤집기  (0) 2022.03.31