문제
앞에서 읽을 때나 뒤에서 읽을 때나 같은 문자열을 회문 문자열이라고 합니다.
문자열이 입력되면 해당 문자열이 회문 문자열이면 "YES", 회문 문자열이 아니면 “NO"를 출력하는 프로그램을 작성하세요. 단 회문을 검사할 때 대소문자를 구분하지 않습니다.
▣ 입력설명
첫 줄에 길이 100을 넘지 않는 공백이 없는 문자열이 주어집니다.
▣ 출력설명
첫 번째 줄에 회문 문자열인지의 결과를 YES 또는 NO로 출력합니다.
▣ 입력예제 1
gooG
▣ 출력예제 1
YES
풀이
StringBuilder가 제공하는 reverse 함수를 사용해 뒤집고,
String의 equalsIgnoreCase 함수를 사용하면 대소문자 구분없이 문자열이 같은지 확인 할 수 있다.
코드
1) 추천!
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String s = in.next();
String rs = new StringBuilder(s).reverse().toString();
String answer = "NO";
if(s.equalsIgnoreCase(rs)) answer = "YES";
System.out.print(answer);
}
}
2) while문 사용
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String s = in.next();
s = s.toUpperCase();
String answer = "YES";
int lt = 0;
int rt = s.length()-1;
while(lt < rt){
if(s.charAt(lt) != s.charAt(rt)) {
answer = "NO";
break;
}
lt++;
rt--;
}
System.out.print(answer);
}
}
3) for문 사용
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String s = in.next();
s = s.toUpperCase();
String answer = "YES";
int lt = 0;
int rt = s.length()-1;
int len=s.length();
for(int i=0; i<len/2; i++){
if(s.charAt(i)!=s.charAt(len-i-1)) answer="NO";
}
System.out.print(answer);
}
}
'PS(Java) > 인프런 강의 문제' 카테고리의 다른 글
[PS] 인프런 강의 - 문자열 9. 숫자만 추출 (0) | 2022.10.11 |
---|---|
[PS] 인프런 강의 - 문자열 8. 유효한 팰린드롬 (0) | 2022.10.11 |
[PS] 인프런 강의 - 문자열 6. 중복 문자 제거 (0) | 2022.10.10 |
[PS] 인프런 강의 - 문자열 5. 특정 문자 뒤집기 (0) | 2022.10.10 |
[PS] 인프런 강의 - 문자열 4. 단어 뒤집기 (0) | 2022.10.10 |