인프런 커뮤니티 질문&답변

tigerrla님의 프로필 이미지

작성한 질문수

자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비

8. 팰린드롬(replaceAll 정규식이용)

채점페이지에서 계속 오답처리가 되는데 코드 확인해주실 수 있나요?

작성

·

49

0

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!
- 먼저 유사한 질문이 있었는지 검색해보세요.
- 서로 예의를 지키며 존중하는 문화를 만들어가요.
- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.

 

스크린샷 2024-09-29 085911.png

주석처리 부분은 인강듣기 전 풀어본 코드이고,

주석 밑에는 인강을 보고 작성한 코드입니다.

둘 다 결과값은 YES로 출력이 되는데 채점 홈페이지에서는 오답으로 처리되고 있어서 틀린부분이 어디인지 알고싶습니다..

답변 2

0

김태원님의 프로필 이미지
김태원
지식공유자

안녕하세요^^

answer 초기화를 NO로 초기화해보세요.

String answer = "NO"

 

0

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

tigerrla님, 질문해주신 코드와 관련된 유사한 질문들이 있습니다. 주로 회문(팰린드롬) 검사를 할 때 주의할 점과 관련된 내용입니다.

  1. 정답이지만 채점 사이트에서 오답처리가 됩니다
    이 질문에서는 대문자와 소문자 처리에 있어서 “NO”를 반환해야 할 때 “No”로 반환하여 오답으로 처리되는 경우를 다루고 있습니다. 코드 내에서 “NO”와 “YES”를 반환하는 부분을 확인해보시기 바랍니다.
   for(int i=0; i<len/2; i++){
       if(str.charAt(i)!=str.charAt(len-i-1)){
           return "NO"; // 대소문자 확인
       }
   }
  1. 팰린드롬(replaceAll) 문제 질문드립니다.
    이 질문에서는 문자열을 뒤집어서 비교하는 방법과 관련된 내용을 다루고 있습니다. 특히, 특수문자를 제거하고 대문자로 변환한 뒤 비교하는 방법에 대한 정보를 얻을 수 있습니다. 아래 코드를 한 번 확인해보세요.
   s = s.toUpperCase().replaceAll("[^A-Z]", ""); // 특수문자 제거 및 대문자 변환
   String tmp = new StringBuilder(s).reverse().toString(); // 문자열 뒤집기
   if(s.equals(tmp)) answer = "YES";
  1. 왜 틀렸는지 이유를 잘 모르겠습니다..
    이 질문에서는 문자열의 길이가 홀수인 경우에도 회문이 될 수 있다는 점을 설명합니다. 문자열 길이에 대한 조건을 추가적으로 확인해보시는 것이 좋을 듯합니다.
   if(chArr.length % 2 == 1) { // 이 조건은 필요 없습니다.
       return "NO";
   }
  1. 저는 이렇게 풀어봤는데 왜 정답이 아닌지 모르겠어요 ㅠㅠ
    문자열 비교 시 equals 메서드를 사용해야 한다는 점을 강조합니다.
   if (!str.equals(tmp)) {
       answer = "NO";
   }

관련해서 한 가지 더 확인해보셔야 할 점은 입력 문자열을 처리하는 과정에서 특수문자 제외, 대문자 변환 등의 처리가 정확히 이루어지고 있는지 입니다. 특히, 입력 문자열을 다룰 때 공백이나 특수문자가 포함된 경우에도 올바르게 처리되는지 확인해보세요.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

tigerrla님의 프로필 이미지

작성한 질문수

질문하기