프로그래머스 | 문자열 압축_JS
난이도 : Level. 2
언어 : Javascript
출제 내역 : 2020 KAKAO BLIND RECRUITMENT
❓ Question
문자를 압축해 표현 한 것중 가장 짧은 문자열의 길이는?
📝 My Solution
전체 풀이 코드 👈🏻 클릭시 Github로 이동
function chunkString(str, length) {
return str.match(new RegExp('.{1,' + length + '}', 'g'));
}
문자열 압축에서의 핵심은 이 코드가 아닐까 싶습니다.
조건에 따라서 해당 문자열을 나눠주는 코드인데,
참고한 블로그는 아래 남기도록 하겠습니다.
function solution(s) {
let newArr = [];
const lengthArr = [];
for (let i = 0; i<s.length; i++) {
let result = [];
newArr = chunkString(s, i+1)
let count = 1;
우선 문자열을 개수대로 나눠줄 배열과,
조건을 만족한 문자열의 길이를 담을 배열을 만들고,
문자열을 나눠주는 반복문을 생성합니다.
for (let l = 0; l<newArr.length; l++) {
let stand = newArr[l];
if (stand === newArr[l+1]) {
count++
} else {
if (count === 1) {
result.push(stand);
stand = newArr[l+1]
} else {
result.push(count);
result.push(stand);
count = 1;
stand = newArr[l+1]
}
}
다음 반복문으로는 나눠진 문자끼리 비교합니다.
기준 문자를 잡고, 다음 문자와 비교해서 같으면 count 값을 올리고,
아니라면 count 값을 앞으로 두고, 해당 문자를 뒤에 넣어서 배열에 집어 넣습니다.
단, count가 1이라면 문자만 집어 넣습니다.
}
lengthArr.push(result.join("").length)
result = [];
}
return Math.min(...lengthArr)
}
그렇게 진행 한 뒤, 결과로 나온 문자열을 전부 합해 그 문자열의 길이를
길이 배열에 넣어줍니다.
모든 반복문이 완료되면, 길이 배열 중 가장 작은 값을 도출해 냅니다.
결과
참고 블로그
Author And Source
이 문제에 관하여(프로그래머스 | 문자열 압축_JS), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@sstaar91/Algorithm-Programmers-CompressStr저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)