728x90
유효한 팰린드롬
설명
앞에서 읽을 때나 뒤에서 읽을 때나 같은 문자열을 팰린드롬이라고 합니다.
문자열이 입력되면 해당 문자열이 팰린드롬이면 "YES", 아니면 “NO"를 출력하는 프로그램을 작성하세요.
단 회문을 검사할 때 알파벳만 가지고 회문을 검사하며, 대소문자를 구분하지 않습니다.
알파벳 이외의 문자들의 무시합니다.
입력
첫 줄에 길이 100을 넘지 않는 공백이 없는 문자열이 주어집니다.
출력
첫 번째 줄에 팰린드롬인지의 결과를 YES 또는 NO로 출력합니다.
예시 입력
found7, time: study; Yduts; emit, 7Dnuof
예시 출력
YES
풀이
1. String 타입의 answer 변수를 "NO"로 작성한다.
2. 알파벳만 가지고 검사를 하기 때문에 정규식을 이용해 알파벳이 아닌 문자들은 제거한다. 또한 대소문자를 구분하지 않음을 고려한다. String 클래스의 toUpperCase() 로 모든 문자를 대문자로 바꾼다. replaceAll("[^A-Z]", "") 로 알파벳 대문자가 아니면 모두 빈 문자로 바꾸도록 한다.
3. 알파벳만 남아있는 문자열을 뒤집어 새로운 문자열을 만든다. StringBuilder 클래스의 reverse() 와 toString() 을 이용한다.
4. 알파벳만 남아있는 문자열과 그 문자열을 뒤집은 문자열이 같다면 answer 변수를 "YES" 로 바꾼다.
코드
package solve;
import java.util.Scanner;
public class Main_1_8 {
public String solution(String str) {
// 알파벳만 가져오기, 뒤집고 비교
String answer = "NO";
str = str.toUpperCase().replaceAll("[^A-Z]", ""); // 알파벳 대문자가 아닌 것들을 빈 문자로 만들어라
String tmp = new StringBuilder(str).reverse().toString();
if (str.equals(tmp)) { // 알파벳만 남아있는 문자열과, 그것의 뒤집어진 문자열을 비교
answer = "YES";
}
return answer;
}
public static void main(String[] args) {
Main_1_8 T = new Main_1_8();
Scanner scanner = new Scanner(System.in);
String str = scanner.nextLine();
System.out.println(T.solution(str));
}
}
728x90
'Coding Test Inflearn' 카테고리의 다른 글
[String] 가장 짧은 문자거리 (2) | 2024.01.30 |
---|---|
[String] 숫자만 추출 (2) | 2024.01.29 |
[String] 회문 문자열 (2) | 2024.01.28 |
[String] 중복 문자 제거 (0) | 2024.01.27 |
[String] 특정 문자 뒤집기 (0) | 2024.01.27 |