본문 바로가기
Front-End/Algorithm

[알고리즘] 유효한 팰린드롬

by 민바이민 2021. 5. 20.

❓유효한 팰린드롬(회문 문자열)을 검사하시오

 

앞에서 읽을 때나 뒤에서 읽을 때나 같은 문자열을 팰린드롬이라고 합니다.
문자열이 입력되면 해당 문자열이 팰린드롬이면 "YES", 아니면 “NO"를 출력하는 프로그램을 작성하세요.
단 회문을 검사할 때 알파벳만 가지고 회문을 검사하며, 대소문자를 구분하지 않습니다. 알파벳 이외의 문자들의 무시합니다.

입력설명
첫 줄에 정수 길이 100을 넘지 않는 공백이 없는 문자열이 주어집니다.

출력설명
첫 번째 줄에 팰린드롬인지의 결과를 YES 또는 NO로 출력합니다.

입력예제 1
found7, time: study; Yduts; emit, 7Dnuof

출력예제 1 YES

 

💡 문제 풀이

 

function solution(s) {
    let answer = "YES";
    // a-z의 소문자가 아닌것(^)들을 찾는 정규식
    s = s.toLowerCase().replace(/[^a-z]/g, '');
    if (s.split('').reverse().join('') !== s) return "NO"

    return answer;
}

let str = "found7, time: study; Yduts; emit, 7Dnuof";
console.log(solution(str));

 

1. 받은 문자열을 모두 소문자로 전환(toLowerCase()) 후 정규식을 이용해서 소문자가 아닌 것을 다 없애준다
replace(/[^a-z]/g, '') [a-z]가 a부터 z까지 범위를 표현하는데 ^ 이 녀석을 넣어 아닌것들을 찾아내 ''으로 여백을 없애준다.

2. 받은 문자열을 한 글자씩 나누어 배열로 설정(split('')) 후 reverse를 시키고 배열을 문자열로 다시 만들어준다(join('')) 그 값이 입력받은 문자열과 다르면 NO를 출력, 맞으면 YES 출력

댓글