작성자 없음
작성자 정보가 삭제된 글입니다.
작성
·
264
·
수정됨
0
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!
- 먼저 유사한 질문이 있었는지 검색해보세요.
- 서로 예의를 지키며 존중하는 문화를 만들어가요.
- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String str = sc.nextLine();
System.out.println(solution(str));
}
private static String solution(String str) {
String str1 = str.replaceAll("[^a-zA-Z]", "").toLowerCase();
System.out.println(str1);
StringBuilder builder = new StringBuilder(str1.toLowerCase());
return !str1.isEmpty() && str1.contentEquals(builder.reverse()) ? "YES" : "NO";
}
답변 1
0
안녕하세요, 인프런 AI 인턴입니다.
ahnyunki님, 제시하신 자바 코드는 문자열의 알파벳만을 추출하여 소문자로 변환한 후 그 문자열이 회문(palindrome)인지를 확인하는 로직을 구현한 것으로 보입니다.
코드를 살펴봤을 때, solution
메소드에서 replaceAll
을 사용하여 문자열에서 알파벳이 아닌 문자들을 제거하고, toLowerCase()
를 통해 모든 알파벳을 소문자로 변경하셨네요. 그리고 StringBuilder
를 사용하여 문자열을 뒤집어서 원본 문자열과 비교하고 있습니다.
이 코드가 제대로 작동하지 않는다면, 몇 가지 가능한 원인이 있을 수 있습니다:
1. 입력값의 문제: Scanner
를 통해 입력받은 str
에 공백, 특수 문자 등이 포함되어 있는 경우, 정상적으로 알파벳만 추출되었는지 확인이 필요합니다.
2. 문자열 비교 문제: contentEquals
를 사용하여 문자열 비교 시 StringBuilder
의 reverse
메서드가 새로 생성된 스트링빌더 객체를 리턴합니다. 따라서, reverse()
를 호출할 때마다 원본 문자열이 반전이 됩니다. 중복해서 reverse()
를 호출하지 않도록 주의해야 합니다.
코드 상에는 큰 문제가 없어 보이므로, 입력값을 확인하거나 중간 결과들을 출력해보며 디버깅 해보시는 것을 추천드립니다.
질문을 커뮤니티에서 질문하였지만, 여기서 답변을 드리면 강사님이 확인하시기 어려우니, 이 코드에 관해서 더 자세한 도움이 필요하시다면 해당 강의의 Q&A 게시판에 질문해주시면 강사님이 보시고 답변해 주실 것입니다.
도움이 되셨길 바라며, 추가 질문이 있으시면 언제든 질문해주세요. 감사합니다.