728x90
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
import java.util.*;
class Solution {
public int solution(String s) {
int n = s.length();
if(n==1) return 1; // 문자열 길이가 1인 경우 바로 1 리턴
int answer = n; // 초기값은 원본 길이로 설정
// 문자 조각 단위를 1~n/2까지 시도
for(int k=1; k<=n/2; k++){
StringBuilder sb = new StringBuilder();
String pre = s.substring(0, k);
int cnt = 1;
for(int i=k; i<n; i+=k){
int end = Math.min(i+k, n);
String cur = s.substring(i, end);
if(cur.equals(pre)){
cnt++;
}
else{
if(cnt>1) sb.append(cnt);
sb.append(pre);
pre = cur;
cnt=1;
}
}
if(cnt>1) sb.append(cnt);
sb.append(pre);
answer = Math.min(answer, sb.length());
}
return answer;
}
}'Algorithm > Programmers' 카테고리의 다른 글
| [Lv.2] JadenCase 문자열 만들기 : Java (0) | 2025.09.26 |
|---|---|
| [Lv.2] 괄호 회전하기 : Java (0) | 2025.09.26 |
| [Lv.2] 다리를 지나는 트럭 : Java (0) | 2025.09.26 |
| [Lv.2] 짝지어 제거하기 : Java (0) | 2025.09.26 |
| 조이스틱 : Java (1) | 2025.07.05 |