반응형
Notice
Recent Posts
Recent Comments
Link
관리 메뉴

짧은코딩

유효한 팰린드롬 본문

반응형

해결법

-내 생각(비효율적 + 틀림)

나는 문자를 반으로 잘라서 뒤에 자른 문자는 다시 뒤집어서 푸는걸 생각했다. 틀렸지만 여러 함수를 배웠으니 정리하려고 한다.

 

내 코드

<html>
  <head>
    <meta charset="UTF-8" />
    <title>출력결과</title>
  </head>
  <body>
    <script>
      function solution(s) {
        let answer = "YES";

        s = s.toLowerCase();
        s = s.replace(/,|:|;/g, "");
        let len = s.length;
        let tmp = "";

        if (len % 2 === 0) {
          tmp = s.slice(Math.floor(len / 2), len);
          s = s.slice(0, Math.floor(len / 2));
        } else {
          tmp = s.slice(Math.floor(len / 2) + 1, len);
          s = s.slice(0, Math.floor(len / 2));
        }

        tmp = Array.from(tmp);
        tmp = tmp.reverse().join("").trim();

        if (s !== tmp) {
          answer = "NO";
        }

        return answer;
      }

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

정규 표현식을 사용했다.

그리고 문자열을 배열로 만들려면 Array.from(s) 이렇게 사용해야 한다.

 

해결법

-강사님 풀이

이걸 통째로 뒤집어서 원본과 비교한다. 내 풀이에 비해서 굉장이 단순하다.

 

강사님 풀이

<html>
  <head>
    <meta charset="UTF-8" />
    <title>출력결과</title>
  </head>
  <body>
    <script>
      function solution(s) {
        let answer = "YES";

        s = s.toLowerCase().replace(/[^a-z]/g, "");
        let tmp = s.split("").reverse().join("");
        if (s !== tmp) answer = "No";


        return answer;
      }

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

정규 표현식은 a-z가 아닌 문자를 다 없앤다는 의미이다. 그리고 문자열에서 배열로 만든는 것도 split로 간단하게 했다.

반응형

'코딩테스트 with JS > 자바스크립트 알고리즘 문제풀이(인프런)' 카테고리의 다른 글

가장 짧은 문자거리  (0) 2022.08.16
숫자만 추출  (0) 2022.08.15
회문 문자열  (0) 2022.08.13
등수구하기  (0) 2022.08.12
가위 바위 보  (0) 2022.08.11
Comments