프로그래머스 문자열 압축 [2020 KAKAO BLIND RECRUITMENT]
https://programmers.co.kr/learn/courses/30/lessons/60057#
문제 풀이
- 이 문제는 문자열 처리 문제입니다.
- 1부터 str.length()/2까지 문자열을 잘라 압축해 보면서 가장 짧게 압축이 됐을 때 문자열의 길이를 리턴합니다.
- 압축 방법은 코드를 참고해주세요!
코드
#include <string>
#include <vector>
using namespace std;
int string_compress(string s, int unit) {
vector<string> v; // 잘린 문자열 저장
vector<int> count;
int idx = -1;
for(int i=0; i<s.length(); i+=unit) {
string temp = s.substr(i, unit); // 단위에 따라 문자열 자른 후
if(!v.empty() && v.back() == temp)
count[idx]++; // 같은 문자열이 앞에 있다면 count 증가
else {
v.push_back(temp);
count.push_back(1);
idx++;
}
}
string res = "";
for(int i=0; i<v.size(); ++i) {
if(count[i] > 1) res += to_string(count[i]); // 1 이상일때만 숫자 붙임
res += v[i];
}
return res.length();
}
int solution(string s) {
int answer = s.length();
for(int i=1; i<=s.length()/2; ++i) {
int len = string_compress(s, i);
answer = min(answer, len);
}
return answer;
}
실행 결과
'Problem Solving' 카테고리의 다른 글
[c++][프로그래머스] 자물쇠와 열쇠 (0) | 2022.02.22 |
---|---|
[c++][프로그래머스] 괄호 변환 (0) | 2022.02.16 |
[c++][프로그래머스] 매출 하락 최소화 (0) | 2022.02.14 |
[c++][프로그래머스] 카드 짝 맞추기 (0) | 2022.02.12 |
[c++][프로그래머스] 광고 삽입 (0) | 2022.02.11 |
댓글