-
[JAVA] 알고리즘 문제 - 유효한 팰린드롬Java 알고리즘 문제/자바(Java) 알고리즘 문제풀이 입문 2023. 5. 30. 22:45반응형
유효한 팰린드롬
- 회문 또는 팰린드롬은 거꾸로 읽어도 제대로 읽는 것과 같은 문장이나 낱말, 숫자, 문자열들이다.
설명
앞에서 읽을 때나 뒤에서 읽을 때나 같은 문자열을 팰린드롬이라고 합니다.
문자열이 입력되면 해당 문자열이 팰린드롬이면 "YES", 아니면 “NO"를 출력하는 프로그램을 작성하세요.
단 회문을 검사할 때 알파벳만 가지고 회문을 검사하며, 대소문자를 구분하지 않습니다.
알파벳 이외의 문자들의 무시합니다.
입력
첫 줄에 길이 100을 넘지 않는 공백이 없는 문자열이 주어집니다.
출력
첫 번째 줄에 팰린드롬인지의 결과를 YES 또는 NO로 출력합니다.
package chap1; import java.util.Scanner; public class chap1_solution04 { public String ex_solution04(String s){ String answer = "NO"; //대문자 A부터 Z까지가 아니면 모두 빈문자열로 만들어라 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) { chap1_solution04 T = new chap1_solution04(); Scanner kb = new Scanner(System.in); String str = kb.next(); System.out.println(T.ex_solution04(str)); } }
public static void main(String[] args) { chap1_solution04 T = new chap1_solution04(); Scanner kb = new Scanner(System.in); String str = kb.next(); System.out.println(T.ex_solution04(str)); }
우선 Scanner를 통하여 문자열들을 입력 받는다.
found7, time: study; Yduts; emit, 7Dnuof
만약 이와같은 문자를 입력하였다고 가정하자.
public String ex_solution04(String s){ String answer = "NO";
우선 answer에 "NO"라는 스트링을 설정해둔다.
//대문자 A부터 Z까지가 아니면 모두 빈문자열로 만들어라 s = s.toUpperCase().replaceAll("[^A-Z]", "");
그리고 입력받은 문자열을 가공해야하는데 문자열 외 문자들을 무시한다고 하였으니 replaceAll을 사용하여 문자열 이외의 것들은 따로 처리해준다.
이역시도 대소문자를 구분하지 않기 때문에 toUpperCase()를 적용시키고 replaceAll을 통하여 A~Z까지의 문자열이 아니라면 빈 문자열로 치환한 값들을 s에 대입시킨다.
String tmp = new StringBuilder(s).reverse().toString(); if(s.equals(tmp)){ answer = "YES"; } return answer;
그리고 StringBuilder를 통해 가공한 값을 reverse를 통해 뒤집고 다시 문자열로 만들어 tmp에 저장한다.
가공한 두가지의 데이터를 비교하여 같다면 "YES"를 같지 않다면 초기에 설정해두었던 "NO"를 반환한다.
반응형'Java 알고리즘 문제 > 자바(Java) 알고리즘 문제풀이 입문' 카테고리의 다른 글
[JAVA] 알고리즘 문제 - 암호 해독하기 (0) 2023.08.09 [JAVA] 알고리즘 문제 문자열 압축 (0) 2023.08.09 [JAVA] 알고리즘 문제 - 회문 문자열 (0) 2023.05.30 [Java] 알고리즘 - 중복된 문자 제거 (0) 2023.05.17 [Java] 알고리즘 문제 - 특정 문자 뒤집기 (0) 2023.05.17