티스토리 뷰
728x90
문제 링크
programmers.co.kr/learn/courses/30/lessons/60057
코딩테스트 연습 - 문자열 압축
데이터 처리 전문가가 되고 싶은 어피치는 문자열을 압축하는 방법에 대해 공부를 하고 있습니다. 최근에 대량의 데이터 처리를 위한 간단한 비손실 압축 방법에 대해 공부를 하고 있는데, 문자
programmers.co.kr
풀이
간단합니다. 가능한 모든 단위(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 |
댓글