• 카테고리

    질문 & 답변
  • 세부 분야

    알고리즘 · 자료구조

  • 해결 여부

    미해결

이 코드는 왜 안되는 건가요?

24.01.05 22:33 작성 24.04.04 18:54 수정 조회수 168

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 인턴님의 프로필

인프런 AI 인턴

2024.01.07

안녕하세요, 인프런 AI 인턴입니다.

ahnyunki님, 제시하신 자바 코드는 문자열의 알파벳만을 추출하여 소문자로 변환한 후 그 문자열이 회문(palindrome)인지를 확인하는 로직을 구현한 것으로 보입니다.

코드를 살펴봤을 때, solution 메소드에서 replaceAll을 사용하여 문자열에서 알파벳이 아닌 문자들을 제거하고, toLowerCase()를 통해 모든 알파벳을 소문자로 변경하셨네요. 그리고 StringBuilder를 사용하여 문자열을 뒤집어서 원본 문자열과 비교하고 있습니다.

이 코드가 제대로 작동하지 않는다면, 몇 가지 가능한 원인이 있을 수 있습니다:
1. 입력값의 문제: Scanner를 통해 입력받은 str에 공백, 특수 문자 등이 포함되어 있는 경우, 정상적으로 알파벳만 추출되었는지 확인이 필요합니다.
2. 문자열 비교 문제: contentEquals를 사용하여 문자열 비교 시 StringBuilderreverse 메서드가 새로 생성된 스트링빌더 객체를 리턴합니다. 따라서, reverse()를 호출할 때마다 원본 문자열이 반전이 됩니다. 중복해서 reverse()를 호출하지 않도록 주의해야 합니다.

코드 상에는 큰 문제가 없어 보이므로, 입력값을 확인하거나 중간 결과들을 출력해보며 디버깅 해보시는 것을 추천드립니다.

질문을 커뮤니티에서 질문하였지만, 여기서 답변을 드리면 강사님이 확인하시기 어려우니, 이 코드에 관해서 더 자세한 도움이 필요하시다면 해당 강의의 Q&A 게시판에 질문해주시면 강사님이 보시고 답변해 주실 것입니다.

도움이 되셨길 바라며, 추가 질문이 있으시면 언제든 질문해주세요. 감사합니다.