article thumbnail image
Published 2022. 6. 8. 14:56
유효한 팰린드롬
앞에서 읽을 때나 뒤에서 읽을 때나 같은 문자열을 팰린드롬이라고 합니다.
문자열이 입력되면 해당 문자열이 팰린드롬이면 "YES", 아니면 “NO"를 출력하는 프로그램을
작성하세요.
단 회문을 검사할 때 알파벳만 가지고 회문을 검사하며, 대소문자를 구분하지 않습니다.
알파벳 이외의 문자들의 무시합니다.
▣ 입력설명
첫 줄에 정수 길이 100을 넘지 않는 공백이 없는 문자열이 주어집니다.
▣ 출력설명
첫 번째 줄에 팰린드롬인지의 결과를 YES 또는 NO로 출력합니다.
▣ 입력예제 1
found7, time: study; Yduts; emit, 7Dnuof
▣ 출력예제 1
YES

1. 문자열을 보면 특수문자가 포함되어있다. 정규화를 사용해서 특수문자를 없애준다.
2. 메소드 사용해서 소문자로 바꾸고 쪼개고 뒤집고 합치고
3. 조건문으로 비교해준다.
📌작성코드
<html>

<head>
  <meta charset="UTF-8">
  <title>출력결과</title>
</head>

<body>
  <script>
    function solution(s) {
      let answer;
      let str;
      let strs = s.toUpperCase().replace(/[^a-z]/gi, '');
      str = s.replace(/[^a-z]/gi, '').toUpperCase().split('').reverse().join('')
      //a-z까지인건 놔두고 그 이외의 것은 '' 없애준다. 
      if (str === strs) {
        answer = 'yes'
      } else {
        answer = 'no'
      }
      return answer;
    }

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

</html>

우선, 값을 저장할 str변수를 하나 만들어준다.
replace() 메소드는 값을 치환해주는 메소드로 정규표현식을 넣어서 사용해보자.

문자열.replace('찾을문자', '대체문자')로 들어오게되고,
(/[^a-z]/gi, '') 소문자 a-z까지인 문자열 중에서 특수문자를 찾아서 특수문자는 제거하고 문자열만 반환한다.

(정규식에 ^의 안들어가면 문자열을 반환하는 것이 아닌, 특수문자만 찾아서 반환하기때문에 ^을 넣어주었다.) 

정규식뒤에 gi 는 대소문자를 구분하지않고 모든 문자를 일치 시켜야할 때 붙여준다.
(g를 붙이지않으면 값을 하나만 비교시킴)

 

조건문을 사용하여 (str === strs)를 비교 하면 값이 출력 된다.

 

 

📌정규표현식에 대해서 궁금하면 참고📌

https://github.com/seo0yoon/regexp-test

'알고리즘' 카테고리의 다른 글

[알고리즘 문제] 3-4번  (0) 2022.06.10
[알고리즘 문제] 3-3번  (0) 2022.06.10
[알고리즘 문제] 3-1번  (0) 2022.06.08
[알고리즘 문제] 2-6번  (0) 2022.06.07
[알고리즘 문제] 2-5번  (0) 2022.06.04
복사했습니다!