• 카테고리

    질문 & 답변
  • 세부 분야

    알고리즘 · 자료구조

  • 해결 여부

    미해결

팰린드롬 문제

23.09.21 15:49 작성 조회수 139

0

선생님 앞 강의에서 말씀 해 주신 s.length -i -1 로 풀고싶어서 아스키코드를 이용해봤는데 if 문을 열고 소문자 대문자 일 때만 돌게끔 범위를 설정해줬습니다.

이런 방법으로는 풀수없는걸까요 ? s[i] !== s[s.length -i -1] 일때는 'NO' 를 출력하게끔 했는데 맞는 문자열이 들어가도 'NO'를 출력하더라구요 ㅠㅠ

function solution(s) {
  let answer = 'YES';

  s = s.toLowerCase();
  for (let i = 0; i < Math.floor(s.length / 2); i++) {
    if (
      s[i].charCodeAt() >= 65 ||
      s[i].charCodeAt() <= 90 ||
      s[i].charCodeAt() >= 97 ||
      s[i].charCodeAt() <= 122
    ) {
      if (s[i] !== s[s.length - i - 1]) {
        return 'NO';
      }
    }
  }
  return answer;
}
console.log(solution('found7, time: study; Yduts; emit, 7DnuoF'));

답변 1

답변을 작성해보세요.

0

wyswhsl21님의 프로필

wyswhsl21

질문자

2023.09.21

죄송합니다 제가 범위를 잘못 설정해서 계속 NO 가 출력 된거였습니다 .

```

 

function solution(s) {
  let answer = 'YES';

  s = s.toLowerCase();
  for (let i = 0; i < Math.floor(s.length / 2); i++) {
    if (
      (s[i].charCodeAt() >= 65 && s[i].charCodeAt() <= 90) ||
      (s[i].charCodeAt() >= 97 && s[i].charCodeAt() <= 122)
    ) {
      if (s[i] !== s[s.length - i - 1]) {
        return 'NO';
      }
    }
  }
  return answer;
}
console.log(solution('found7, time: study; Yduts; emit, 7Dnuod'));

```

이렇게 수정하니 잘 됩니다.