티스토리 뷰
728x90
문제 링크
programmers.co.kr/learn/courses/30/lessons/60057
풀이
간단합니다. 가능한 모든 단위(1 ~ s의 길이)로 문자열을 잘라 압축해보고, 그 결과 중 가장 작은 값을 고르면 됩니다.
코드에선 구현상 편의를 위해 마지막에 더미 스트링을 하나 끼워넣었습니다.
정답 코드
const compressData = tokens => {
let s = '';
let prev = '';
let cnt = 0;
tokens.forEach(token => {
if(token !== prev){
if(cnt > 1) s += String(cnt);
s += prev;
cnt = 0;
}
cnt++;
prev = token;
});
return s.length;
}
function solution(s) {
const INF = 0x3f3f3f3f;
let ans = INF;
for(let i=1; i < s.length + 1; i++){
const tokens = [];
for(let j=0; j < s.length; j+=i){
tokens.push(s.substr(j, i));
}
tokens.push('-=-');
ans = Math.min(ans, compressData(tokens));
}
return ans;
}
728x90
'알고리즘 > 문제 풀이' 카테고리의 다른 글
[프로그래머스] 신규 아이디 추천 (2021 KAKAO Blind Recruitment) (0) | 2021.02.06 |
---|---|
[프로그래머스] 괄호 변환 (2020 KAKAO Blind Recruitment) (3) | 2020.11.19 |
[프로그래머스] 튜플 (Javascript, 2019 카카오 개발자 겨울 인턴십) (0) | 2020.11.14 |
[BOJ] 백준 1376 민식우선탐색 (2) | 2020.09.23 |
[BOJ] 백준 1726 로봇 (0) | 2019.12.14 |
댓글