(알고리즘) 회문 문자열


앞에서 읽을 때나 뒤에서 읽을 때나 같은 문자열을 회문 문자열이라고 한다. 문자열이 입력되면 해당 문자열이 회문 문자열이면 'YES', 회문 문자열이 아니면 'NO'를 출력하는 프로그램을 작성하세요.

단 회문을 검사할 때 대소문자를 구분하지 않는다.

입력설명

첫 줄에 정수 길이 100을 넘지 않는 공백이 없는 문자열이 주어진다.

출력설명

첫 번째 줄에 회문 문자열인지의 결과를 YES 또는 NO로 출력한다.

입력예제

gooG

출력예제

YES


문제풀이

대소문자가 섞여있을 수 있으므로, toLowercase()로 알파벳을 소문자로 통일해준다.

for문을 돌릴때 i번째와 length - i - 1번째 문자가 동일한지를 체크한다. 문자열이 홀수일경우는 가운데 문자열이 달라도 상관이 없기 때문에 홀짝 판별식은 판단하지 않는다.

function solution(s) {
  let string = s.toLowerCase();
  let answer;
  let n = string.length;
  for (let i = 0; i < n; i++) {
    string[i] === string[n - 1 - i] ? answer = 'YES' : answer = 'No'
  }
  return answer;
}
const s = 'gooG';
const s2= 'abbb';
console.log(solution(s));
console.log(solution(s2));


다른 문제풀이

배열화 시켜서 reverse()메소드로 배열을 뒤집는다. 다시 그 배열을 join()메소드로 합친다.

그렇게 나온 문자열과 원문 문자열을 직접 비교해서 결과값을 판별한다.

function solution(s) {
  let answer='Yes';
  s=s.toLowerCase();
  if(s.split('').reverse().join('')!==s) return 'No';
  return answer;
}

좋은 웹페이지 즐겨찾기