728x90
문자열을 1~s.length 까지 하나씩 검사해봐서 가장 최소의 경우를 찾았다.
reduce를 활용해서 문제에서 말하는대로 문자열을 만들었다. 단,
aabbccdd 가 문제에서 2a2b2c2d였다면
a2b2c2d2 <=== 이런식으로 숫자가 뒤로오게 만들었다.
어차피 문자열 길이에는 영향을 주지 않기에 위와같이 구현해 보았다.
function solution(s) {
let ret = s.length
for (let i = 1 ; i < s.length ; i++) {
const ary = []
for (let j = 0 ; j <s.length ; j+=i) {
ary.push(s.slice(j,j+i))
}
const str = ary.reduce((a,c,idx) => {
const [ret,cnt,tmp] = a
if (c===tmp) {
if (idx === ary.length-1) return [ret+ String(cnt+1),1,c]
return [ret,cnt+1,tmp]
}
else {
if (cnt<2) return [ret+c,1,c]
else return [ret+ String(cnt) +c,1,c]
}
},["",0,0])
ret = Math.min(ret,str[0].length)
}
return ret
}
728x90
'FrontEnd > 프로그래머스' 카테고리의 다른 글
[JS] 스킬트리 (0) | 2023.06.27 |
---|---|
[JS] 방문 길이 (0) | 2023.06.25 |
[JS] 괄호 변환 (0) | 2023.06.25 |
[JS] 프렌즈4블럭 (0) | 2023.06.23 |
[JS] 튜플 (0) | 2023.06.21 |