본문 바로가기
CS (컴퓨터 사이언스)/Algorithm (알고리즘)

[알고리즘] 1. 회문문자열 / 2. 유효한 펠린드롬 / 3. 숫자만 추출 / 4. 가장짧은문자거리 / 5. 문자열압축

by dreamer10457 2024. 1. 28.
반응형

1. 회문문자열

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

        const replacedString = s.toUpperCase();

        const reversedString = replacedString.split('').reverse().join('');

        if (replacedString === reversedString) {
          return 'YES';
        }
        return answer;
      }

      let str = 'gooG';
      console.log(solution(str));
    </script>
  </body>
</html>

 

2. 유효한 펠린드롬 

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

        const replacedString = str.toUpperCase().replaceAll(/[^A-Z]/gi, '');

        const reversed = replacedString.split('').reverse().join('');

        if (replacedString !== reversed) {
          answer = 'NO';
        }
        return answer;
      }

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

 

3. 숫자만 추출

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

        const number = str.replace(/[^0-9]/g, '');

        return parseInt(number);

        // for (let x of str) {
        //   if (!isNaN(x)) answer += x;
        // }
        // return parseInt(answer);
      }

      let str = 'g0en2T0s8eSoft';
      console.log(solution(str));
    </script>
  </body>
</html>

 

4. 가장짧은문자거리 

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

        let distance = 0;

        for (ele of s) {
          if (ele === t) {
            distance = 0;
            answer.push(distance);
          } else {
            distance++;
            answer.push(distance);
          }
        }

        for (let i = s.length - 1; i >= 0; i--) {
          if (s[i] === t) {
            distance = 0;
          } else {
            distance++;

            answer[i] = Math.min(answer[i], distance);
          }
        }
        return answer;
      }

      let str = 'teachermode';
      console.log(solution(str, 'e'));
    </script>
  </body>
</html>

 

5. 문자열압축

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

        let cnt = 1;
        console.log(s.length);

        console.log(s.length);

        for (let i = 0; i < s.length - 2; i++) {
          if (s[i] === s[i + 1]) {
            cnt++;
          } else {
            answer += s[i];
            if (cnt > 1) {
              answer += String(cnt);
              cnt = 1;
            }
          }
        }

        // const map = new Map();

        // for (let x of s.split('')) {
        //   if (map.has(x)) {
        //     map.set(x, map.get(x) + 1);
        //   } else {
        //     map.set(x, 1);
        //   }
        // }

        // for (let [key, value] of map) {
        //   if (value === 1) {
        //     answer = answer + key;
        //   } else {
        //     answer = answer + key + value;
        //   }
        // }
        return answer;
      }

      let str = 'KKHSSSSSSSE';
      console.log(solution(str));
    </script>
  </body>
</html>
반응형