티스토리 뷰
title: "문자열 압축"
category: 프로그래머스[Level-2]
tags: [C++, JavaScript, 프로그래머스]
date: "2021-01-22"
문제 링크
C++
#include <string>
#include <vector>
#include <algorithm>
#include <iostream>
using namespace std;
// length/2 개 단위까지
int solution(string s) {
int answer = 0;
answer = s.length();
for(int cut=1; cut<=s.length()/2; cut++){
vector<string> v;
for(int i=0; i<s.length(); i+=cut){
// 문자열 자르기
v.push_back(s.substr(i, cut));
}
string result = "";
int count = 1;
for(int i=1; i<v.size(); i++){
// 문자열 합치기
if(v[i-1] == v[i]) count++;
else {
if(count!=1) result += to_string(count) + v[i-1];
else result += v[i-1];
count = 1;
}
}
// 후처리
if(count!=1) result += to_string(count) + v.back();
else result += v.back();
// 최솟값
answer = min(answer, (int)result.length());
}
return answer;
}
JavaScript
function solution(s) {
var answer = s.length;
for (let cut = 1; cut <= parseInt(s.length / 2); cut++) {
const arr = [];
for (let i = 0; i < s.length; i += cut) {
// 문자열 자르기
arr.push(s.substring(i, i + cut));
}
let count = 1;
let str = "";
for (let i = 1; i < arr.length; i++) {
// 문자열 합치기
if (arr[i - 1] == arr[i]) {
count++;
} else {
if (count != 1) str += count + arr[i - 1];
else str += arr[i - 1];
count = 1;
}
}
// 후처리
if (count != 1) str += count + arr[arr.length - 1];
else str += arr[arr.length - 1];
answer = Math.min(answer, str.length);
}
return answer;
}
728x90
반응형
'Programmers Solutions > Level-2' 카테고리의 다른 글
[프로그래머스] 큰 수 만들기 (0) | 2021.02.01 |
---|---|
[프로그래머스] 삼각 달팽이 (0) | 2021.02.01 |
[프로그래머스] 프린터 (0) | 2021.01.31 |
[프로그래머스] 124 나라의 숫자 (0) | 2021.01.31 |
[프로그래머스] 멀쩡한 사각형 (0) | 2021.01.31 |
댓글