https://school.programmers.co.kr/learn/courses/30/lessons/60057
문제에 제시된대로 구현해주면 된다.
1. s.length() / 2만큼만 나눈다.
2. 문자열 자를 길이 step을 1~s.length() / 2만큼 돌면서 가장 짧은 길이를 구한다.
for(int k = j; k < j + step; k++) {
if(k < s.length())
next += s.charAt(k);
}
문자열이 aabbaccc이고 3개로 자른다고 하면
aab bac cc
뒤에 cc는 두개밖에 되지 않는다. 따라서 위에 for문을 통해서
k < s.length()일 경우만 next에 더해준다.
class Solution {
public int solution(String s) {
int answer = s.length();
for(int step = 1; step < s.length() / 2 + 1; step++) {
String prev = s.substring(0, step);
String answer_prev = "";
int count = 1;
for(int j = step; j < s.length(); j += step) {
String next = "";
for(int k = j; k < j + step; k++) {
if(k < s.length())
next += s.charAt(k);
}
if(prev.equals(next)){
count++;
}
else {
answer_prev += (count >= 2) ? count + prev : prev;
count = 1;
prev = next;
}
}
answer_prev += (count >= 2) ? count + prev : prev;
answer = Math.min(answer, answer_prev.length());
}
return answer;
}
}