작성
·
181
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 인턴입니다.
rhkdtjd_12님, 자바스크립트로 알고리즘 문제를 풀어보시는 굉장히 좋은 방법입니다.
제시한 코드는 문자열에서 연속된 문자를 감지하여, 해당 문자와 그 문자가 연속된 횟수를 결과로 반환하는 압축 알고리즘을 구현한 것으로 보입니다. 마지막에 join("")
메서드를 사용함으로써 배열에 저장된 값들을 하나의 문자열로 병합하여 반환하고 있네요.
예시로 들어주신 solution("KKHSSTTPPSEE")
의 경우에는 “K2HS2T2P2SE2”와 같이 문자열을 압축한 결과를 얻게 됩니다. 문자열을 처음 접하는 자리와 해당 문자가 바뀌는 자리에서 count를 처리하는 로직이 인상적입니다.
자바스크립트의 배열과 문자열 메소드를 활용해서 로직을 잘 작성하셨으며, 별도의 문제점이 보이지 않습니다. 다만, 실제 코딩 테스트 환경에서는 주석 처리한 console.log
를 사용하여 결과를 확인하는 과정도 중요하니, 이 부분도 잘 활용하시면 좋겠습니다.
계속해서 문제 풀이를 통해 실력을 키워 나가시길 응원합니다!