3-2) 유효한 팰린드롬

김예지·2021년 8월 26일
0

문제

앞에서 읽을 때나 뒤에서 읽을 때나 같은 문자열을 팰린드롬이라고 합니다.
문자열이 입력되면 해당 문자열이 팰린드롬이면 "YES", 아니면 “NO"를 출력하는 프로그램을 작성하세요.
단 회문을 검사할 때 알파벳만 가지고 회문을 검사하며, 대소문자를 구분하지 않습니다. 알파벳 이외의 문자들의 무시합니다.
[입력설명]
첫 줄에 정수 길이 100을 넘지 않는 공백이 없는 문자열이 주어집니다.
[출력설명]
첫 번째 줄에 팰린드롬인지의 결과를 YES 또는 NO로 출력합니다.

입력예제 1

found7, time: study; Yduts; emit, 7Dnuof

출력예제 1

YES


문제 풀이

예습 이론

  • replace(/[^a-z]/g, ''): 소문자가 아닌것을 모두 찾아서 ''로 대체하라(정규표현식 사용)
  • s=s.toLowerCase().replace(/[^a-z]/g, ''): s문자열을 소문자로 바꾸고, 그 문자열에서 a-z가 아닌 모든 것들을 ''로 대체하라
  • s.split('').reverse().join(''): s문자열을 ''기준으로 쪼개서 배열로 만들고, 이 배열을 뒤집은 이후, ''로 join하여 문자열로 만들어라.

코드

(1) 문자열을 소문자로 모두 변환한다.
(2) 변환한 문자열에서 소문자가 아닌 모든 문자를 삭제한다.(replace 사용)
(3) 뒤집은 문자열이 원본 문자열과 같지 않다면, "NO"를 리턴한다.
(4) 같다면 if문을 빠져나와서 answer의 초기값인 "YES"를 리턴한다.

<html>
    <head>
        <meta charset="UTF-8">
        <title>출력결과</title>
    </head>
    <body>
        <script>
            function solution(s){
                let answer="YES";
                s=s.toLowerCase().replace(/[^a-z]/g, '');
                //console.log(s);
                if(s.split('').reverse().join('')!==s) return "NO";
                return answer;
            }
            
            let str="found7, time: study; Yduts; emit, 7Dnuof";
            console.log(solution(str));
        </script>
    </body>
</html> 
profile
내가 짱이다 😎 매일 조금씩 성장하기🌱

2개의 댓글

comment-user-thumbnail
2021년 9월 10일

9/10
1. replace를 활용해서 풀어보기(영어가 아닌 것은 ''로 replace하면 문자열에서 아예 삭제됨)

답글 달기
comment-user-thumbnail
2021년 9월 11일

9/11

답글 달기