오늘보다 더 나은 내일의 나에게_

자바 알고리즘 문제 풀이 String Q08_유효한 팰린드롬 본문

ALGORITHM/inflearn_javaAlgorithm

자바 알고리즘 문제 풀이 String Q08_유효한 팰린드롬

chan_96 2022. 1. 31. 20:44
728x90
설명

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

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

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

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


입력

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


출력

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



예시 입력1


예시 출력

found7, time: study; Yduts; emit, 7Dnuof YES

 

코드

해설 코드

import java.util.*;
class Main {	
	public String solution(String s){
		String answer="NO";
		s=s.toUpperCase().replaceAll("[^A-Z]", "");
		String tmp=new StringBuilder(s).reverse().toString();
		if(s.equals(tmp)) answer="YES";
		return answer;
	}

	public static void main(String[] args){
		Main T = new Main();
		Scanner kb = new Scanner(System.in);
		String str=kb.nextLine();
		System.out.print(T.solution(str));
	}
}

 

 

풀이 및 정리 

정규식을 간략하게 며칠전에 공부했었는데 이렇게 자바에서 정규식을 활용한 문제를 풀어볼줄은 몰랐다.. 진짜 해설코드를 보면서 아.. 정규식을 사용하면 간단하네... 생각을 했다

먼저 팰린드롬이란?
앞에서 읽으나 뒤에서 읽으나 같은 문장이나 낱말을 뜻함(회문과 동일)
=> 문제에서는 대소문자를 구별하지않고 알파벳이외의 문자는 무시

문제 풀이 순서를 간략하게 정리하면 문자열을 입력받고 입력받은 문자열을 대문자나 소문자로 바꾸고 알파벳 이외의 숫자, 공백, 기호 등 제외 시켜 변수에 담아준다. 제외시킨 변수를 거꾸로 뒤집어진 형태의 문자열로 또 다른 변수를 생성해 담아준다. 이 두개의 변수를 비교해준다.

replaceAll(String regex, String replacement)
=> 대상 문자열을 원하는 값으로 바꾸는 메소드이다. regex에는 정규식이오고 replacement에는 바꿀 값이 온다.
[^A-Z] => A~Z까지 의 알파벳을 포함하지 않음
728x90
Comments