반응형
https://programmers.co.kr/learn/courses/30/lessons/60057
나의 풀이
function solution(s) {
if (s.length === 1) {
return 1;
}
const answer = [];
let string = s.split("");
let zipList = [];
let count = 1;
for (let i = 1; i <= (s.length / 2); i++) {
let zip = "";
while(string.length) {
zipList.push(string.splice(0, i).join(""));
}
zipList.reduce((acc, cur, indx) => {
if (JSON.stringify(acc) === JSON.stringify(cur)) {
count += 1;
if (indx === zipList.length - 1) {
count === 1 ? zip += acc : zip += count + acc;
count = 1;
}
return cur;
}
count === 1 ? zip += acc : zip += count + acc;
count = 1;
if (indx === zipList.length - 1) {
zip += cur;
}
return cur;
});
answer.push(zip);
string = s.split("");
zipList = [];
}
return Math.min(...answer.map(zip => {
return zip.split("")
.join("")
.length;
}));
}
엄청 길다..!
json.stringify로 비교하였고, count를 세어서 반복 횟수와 함께 zip에 넣었다.
zip을 answer에 모아놓고 마지막에 나머지 연산자와 math.min으로 최솟값을 구하여 반환하였다.
아직 재귀함수를 활용하지 못하는 것이 아쉽다 ㅠ
반응형
'IT > Algorithm' 카테고리의 다른 글
프로그래머스) 124 나라의 숫자 (0) | 2021.10.29 |
---|---|
프로그래머스) 멀쩡한 사각형 (0) | 2021.10.28 |
프로그래머스) 최대공약수와 최소공배수 (0) | 2021.10.27 |
프로그래머스) 시저 암호 (0) | 2021.10.27 |
프로그래머스) 문자열 내 마음대로 정렬하기 (0) | 2021.10.25 |