[JS.알고리즘] 펠린드롬

houndhollis·2024년 6월 17일
0

퇴사 후 조금 쉬었다. 하지만 쉬다보니 계속 쉬고 싶어지는 그래도 체력도 많이 안좋았는데 요즘은 수영을 다녀서 그런지 피곤함이 많이 사라졌다.

📘문제설명

펠린드롬, 거꾸로 읽어도 똑같은 문장이나 단어를 뜻한다.

문자열이 입력 되면 해당 문자열이 펠린드롬이면, YES 아니면 NO를 출력하는 프로그램을 작성하면 되는 문제이다.
회문 을 검사할 때 알파벳만 가지고 회문을 검사하며, 대소문자를 구분하지 않는다.

풀이

const solve = (str) => {
 
  str = str.toLowerCase().replace(/[^a-z]/g,''); 
  if (str.split('').reverse().join('') !== str) return 'NO'
  
  return 'YES'
}
solve('pizza1, edit: study; Yduts; tide, 1azzip')

간단하게 풀어봤다. 여기서 핵심은
문자열이 들어왔을때, split 과 join 의 개념과,
reverse() 를 사용하기 위해 배열로 만들어준 후(split),

다시 join 메서드를 이용하여 문자열로 반환 해준 것.

그리고 정규식 표현이 짚고 넘어가면 좋을듯 하다.

replace(/[^a-z]/g)

여기서 꺽새(^) 는 부정을 뜻한다, 즉 a-z 알파벳 제외하고 나머지를 2번째 인자인 '' 빈 문자열로 만든다는 뜻이다 그리고 마지막
g 는 전역을 뜻한다.

간단하게 요구사항에 맞춰서 알파뱃만 남긴 후, 뒤집어서 같은지 아닌지를 판별하는 간단한 문제였다.

profile
한 줄 소개

0개의 댓글