일단 해보자고~

코딩 테스트(Java) :: 유효한 팰린드롬 본문

Algorithm/Java

코딩 테스트(Java) :: 유효한 팰린드롬

InWooK 2022. 9. 5. 21:35
앞에서 읽을 때나 뒤에서 읽을 때나 같은 문자열을 팰린드롬이라고 한다.
문자열을 입력받고 해당 문자열이 팰린드롬이면 "YES", 아니면 "NO"를 출력하시오.
( * 단, 회문을 검사할 때 알파벳만 가지고 회문을 검사하며, 대소문자를 구분하지 않음)
public static void main(String[] args){
		Main main = new Main();
		Scanner sc = new Scanner(System.in);
		String str = sc.nextLine();
		System.out.println(main.solution(str));
	}

 

문자열이 아니라 이번엔 문장으로 입력을 받아야 하므로 next()가 아니라 nextLine()을 사용했다.

 

 

class Main{	
	public String solution(String str){
		String answer = "NO";						// (1)
		str=str.toUpperCase().replaceAll("[^A-Z]", "");			// (2)
		String tmp = new StringBuilder(str).reverse().toString();	// (3)
		if(str.equals(tmp)) answer = "YES";				// (4)
		
		return answer;
	}

(1) : 입력받은 문자열이 팰린드롬일 때만 YES를 출력해줘야 하므로 초기 return값인 answer는 "NO"로 선언했다.

(2) : 대,소문자를 구분하지 않는다 했으므로 toUpperCase()를 이용해 입력받은 문장인 str을 전부 대문자로 바꾸고 replaceAll()이라는 정규식을 이용해 대문자 A부터 Z가 아닌 문자는 ""을 이용해 지워버린다.

(3) : (2)에서 정규식을 이용해 문장에서 알파벳을 제외한 문자는 지우고 대문자로 바꾼 문자를 다시 거꾸로 정렬해 tmp라는 문자열 변수에 넣어준다.

(4) : (2)의 문장과 (3)의 문장이 같다면 answer에 "YES"를 반환해준다.

 

 

출력 : 

 

Comments