문제
https://programmers.co.kr/learn/courses/30/lessons/60057
코딩테스트 연습 - 문자열 압축
데이터 처리 전문가가 되고 싶은 어피치는 문자열을 압축하는 방법에 대해 공부를 하고 있습니다. 최근에 대량의 데이터 처리를 위한 간단한 비손실 압축 방법에 대해 공부를 하고 있는데, 문자
programmers.co.kr
시행착오
중첩된 for문의 기준을 어떻게 두어야 할지 많이 헷갈렸다...
덧셈보다 곱셈으로 하는 것이 횟수가 깔끔하게 떨어질 것 같았음
코드
class Solution {
public int solution(String s) {
int answer = 1000;
int s_len = s.length();
int grouping_len = s.length()/2;
if(s_len==1){
return 1;
}
for(int i=1; i<=grouping_len ; i++){
String compStr1 = "";
String resultStr = "";
int cnt = 1;
for(int j=0; j<s_len/i; j++){
String compStr2 = s.substring((i*j), (i*j)+i);
if(compStr1.equals(compStr2)){
cnt++;
continue;
}
if(cnt>1){
resultStr += cnt+compStr1;
}else{
resultStr += compStr1;
}
compStr1 = compStr2;
cnt = 1;
}
if(cnt>1){
resultStr += cnt+compStr1;
}else{
resultStr += compStr1;
}
//System.out.println(resultStr);
if(s_len % i != 0){
resultStr+= s.substring(s_len - (s_len%i), s_len);
}
answer = Math.min(resultStr.length(), answer);
}
return answer;
}
}
'Preparing Coding Test > Programmers L2' 카테고리의 다른 글
[Java/프로그래머스/브루트 포스] 카펫 (0) | 2020.08.28 |
---|---|
[Java/프로그래머스] H-Index (0) | 2020.08.23 |
[Java/프로그래머스] 카카오프렌즈 컬러링북 (0) | 2020.08.15 |
[Java/프로그래머스] 멀쩡한 사각형 (0) | 2020.08.12 |
[Java/프로그래머스] 프린터 (0) | 2020.08.12 |