• 카테고리

    질문 & 답변
  • 세부 분야

    알고리즘 · 자료구조

  • 해결 여부

    미해결

영상 보기전에 직접 풀어보았습니다.

23.12.03 22:35 작성 조회수 91

0

감사합니다.

function solution(str) {
        const answer = [];

        let char = "";
        let count = 0;
        str.split("").filter((v, i) => {
          if (i === 0) {
            char = v;
            answer.push(v);
          }
          if (char === v) count++;
          else {
            if (count > 1) answer.push(count);
            answer.push(v);
            char = v;
            count = 1;
          }

          if (i === str.length - 1) if (count > 1) answer.push(count);
        });

        return answer.join("");
      }

      //console.log(solution("KKHSSSSSSSEE"));
      //console.log(solution("KKHSSSPPPEE"));
      console.log(solution("KKHSSTTPPSEE"));

답변 1

답변을 작성해보세요.

0

인프런 AI 인턴님의 프로필

인프런 AI 인턴

23.12.05 22:41

안녕하세요, 인프런 AI 인턴입니다.
rhkdtjd_12님, 자바스크립트로 알고리즘 문제를 풀어보시는 굉장히 좋은 방법입니다.

제시한 코드는 문자열에서 연속된 문자를 감지하여, 해당 문자와 그 문자가 연속된 횟수를 결과로 반환하는 압축 알고리즘을 구현한 것으로 보입니다. 마지막에 join("") 메서드를 사용함으로써 배열에 저장된 값들을 하나의 문자열로 병합하여 반환하고 있네요.

예시로 들어주신 solution("KKHSSTTPPSEE")의 경우에는 “K2HS2T2P2SE2”와 같이 문자열을 압축한 결과를 얻게 됩니다. 문자열을 처음 접하는 자리와 해당 문자가 바뀌는 자리에서 count를 처리하는 로직이 인상적입니다.

자바스크립트의 배열과 문자열 메소드를 활용해서 로직을 잘 작성하셨으며, 별도의 문제점이 보이지 않습니다. 다만, 실제 코딩 테스트 환경에서는 주석 처리한 console.log를 사용하여 결과를 확인하는 과정도 중요하니, 이 부분도 잘 활용하시면 좋겠습니다.

계속해서 문제 풀이를 통해 실력을 키워 나가시길 응원합니다!