1. 문제
앞에서 읽을 때나 뒤에서 읽을 때나 같은 문자열을 회문 문자열이라고 한다.
문자열이 입력되면 해당 문자열이 회문 문자열이면 "YES", 회문 문자열이 아니면 “NO"를 출력할 것.
단, 회문을 검사할 때 대소문자를 구분 X
2. 예시
gooG -> true
gasfdg -> false
3. 코드
import java.util.Scanner;
public class Main {
public String solution(String str) {
String ans = "YES";
str = str.toUpperCase();
for(int i =0;i<str.length()/2 ;i++){
if(str.charAt(i) != str.charAt(str.length()-i-1)) return "NO";
}
return ans;
}
public static void main(String[] args) {
Main case7 = new Main();
Scanner in = new Scanner(System.in);
String str = in.nextLine();
System.out.println(case7.solution(str));
}
}
- 회문 문자열은 입력한 문자길이를 반으로 나눠 비교하면 된다.
- 문제에 대소문자구분은 하지 않는다로 되어 있으니 toUpperCase() toLowerCase()로 대/소문자 변환을 해준다.
- for문으로 맨 앞글자와 뒷 글자를 비교 후 같지 않으면 "NO"를 리턴
- 예를 들어 goOg일 경우, 대소문자변환 -> goog
- goog를 반으로 나눈 길이는 2이므로 2만큼 for문을 돌리고, 맨 앞글자와 맨 뒷글자 - g, o, o, g에서 g!= g는 false이고, o!= o 또한 false 이므로 return 값은 "YES"
4. 마무리
public String solution(String str) {
String ans = "YES";
str = str.toUpperCase();
StringBuilder stringBuilder= new StringBuilder(str);
if(stringBuilder.reverse().toString().equals(str)){
return ans;
}else {
return "No";
}
}
- 더 간단한 것이 있다. StringBuilder를 사용해 보는 것
- 똑같이 대소문자 구분 없이 변환해 준 후, 입력한 str과 reverse()를 사용해 str을 뒤집어 준 후 비교한다
- 비교 후 true면 YES, false는 NO
'알고리즘(Algorithm)' 카테고리의 다른 글
[Algorithm] 숫자만 추출 (0) | 2023.07.19 |
---|---|
[Algorithm] 팰린드롬 (0) | 2023.05.30 |
[Algorithm] 중복문자제거 (0) | 2023.03.24 |
[Algorithm] 특정 문자 뒤집기 (0) | 2023.03.23 |
[Algorithm] 단어 뒤집기 (0) | 2023.03.13 |