반응형
설명
앞에서 읽을 때나 뒤에서 읽을 때나 같은 문자열을 팰린드롬이라고 합니다.
문자열이 입력되면 해당 문자열이 팰린드롬이면 "YES", 아니면 “NO"를 출력하는 프로그램을 작성하세요.
단 회문을 검사할 때 알파벳만 가지고 회문을 검사하며, 대소문자를 구분하지 않습니다.
알파벳 이외의 문자들의 무시합니다.
입력
첫 줄에 길이 100을 넘지 않는 공백이 없는 문자열이 주어집니다.
출력
첫 번째 줄에 팰린드롬인지의 결과를 YES 또는 NO로 출력합니다.
import java.util.Scanner;
public class Main {
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 T = new Main();
Scanner sc = new Scanner(System.in);
String str = sc.nextLine();
System.out.println(T.solution(str));
}
}
replace()
replace() 함수는 대상 문자열을 원하는 문자값으로 변환하는 함수입니다.
public String replace(CharSequence target, CharSequence replacement)
replaceAll()
replaceAll() 함수는 대상 문자열을 원하는 문자값으로 변환하는 함수입니다.
public String replaceAll(String regex, String replacement)
두개의 차이점은
charSequence와 String 차이가 있습니다.
replaceAll에는 정규식을 사용할수가 있어서 replace에서 처리하지 못한 문자열도 처리가 가능합니다.
위 코드에서 [^A-Z] 이것이 정규식 표현입니다. 해석을 해본다면 A-Z를 제외하고 전부 빈칸으로 바뀌는 코드입니다.
Kotlin 문제풀이
import java.util.*
fun main() {
val sc = Scanner(System.`in`)
val str = sc.nextLine().uppercase().replace("[^A-Z]".toRegex(), "")
var answer = "NO"
val tmp = StringBuilder(str).reverse().toString()
if (str == tmp) answer = "YES"
println(answer)
}
반응형
'Algorithm > Java알고리즘 문제풀이 & Kotlin' 카테고리의 다른 글
[Algorithm] 격자판 최대합 (0) | 2023.02.07 |
---|---|
[Algorithm] 등수구하기 (0) | 2023.02.07 |
[Algorithm] 회문 문자열 (0) | 2023.02.06 |
[Algorithm] 점수계산 (0) | 2023.02.06 |
[Algorithm] 뒤집은 소수 (0) | 2023.01.30 |