문제
문제 링크
접근
- 엄청 어려운 문제풀이였다기보다는, 문제 전개를 이해한다면 큰 챌린지는 없다
- 아래와 같이 풀었는데, 보시다시피 한 범위 보다 작은 마지막 부분은 임의로 붙였다
- 그런데 다른 분의 풀이를 보니 애초에 마지막 부분까지 반복문을 통해 붙이는 인덱스 오류가 나지 않기 위해 Min()을 이용하셨는데 그 풀이가 더 좋은 것 같다
소스코드
import java.io.*;
import java.util.*;
class Main {
static int N, M;
static int[] Group;
public static void main(String[] args) throws Exception {
String s = "ababcdcdababcdcd";
Solution sol = new Solution();
System.out.println("result : " + sol.solution(s));
}
}
class Solution {
public int solution(String s) {
int answer = -1;
int size = s.length();
for (int i = 1; i < size; i++) {
String result = "";
String currTarget = s.substring(0, i);
int currCnt = 1;
int j = i;
for (j = i; j + i < size+1; j += i) {
if (currTarget.equals(s.substring(j, j + i))) {
currCnt++;
} else {
result = currCnt == 1 ? result + currTarget : result + currCnt + currTarget;
currCnt = 1;
currTarget = s.substring(j, j + i);
}
}
result = currCnt == 1 ? result + currTarget : result + currCnt + currTarget;
if (j != size)
result = result + s.substring(j, size);
answer = answer == -1 ? result.length() : answer < result.length() ? answer : result.length();
}
return answer;
}
}