๋ฌธ์ ์ค๋ช :
1๊ฐ ์ด์ ๋จ์๋ก ๋ฌธ์์ด์ ์๋ผ ์์ถํ์ฌ ํํํ ๋ฌธ์์ด ์ค ๊ฐ์ฅ ์งง์ ๊ฒ์ ๊ธธ์ด๋ฅผ return
ํ์ด ๋ฐฉ๋ฒ :
1. 1๋ถํฐ ์
๋ ฅ ๋ฌธ์์ด s์ ๊ธธ์ด๋งํผ ์๋ฅผ ๋ฌธ์์ด์ ๊ธธ์ด๋ฅผ ์ค์ ํ๋ฉฐ ๋ฐ๋ณต
2. ์ค์ ๋ ๊ธธ์ด๋งํผ ๋ฌธ์์ด์ ์๋ผ ๋ธ token์ ๋ฐฐ์ด ์์ฑ
3. ๋ฌธ์์ด์ ๋น๊ตํ์ฌ token์ ๋ฐฐ์ด์ ํ๋์ ๋ฌธ์์ด๋ก ์์ถ
4. 1~3๊ณผ์ ์ผ๋ก ์์ถ๋ ๋ฌธ์์ด ์ค ๊ฐ์ฅ ์งง์ ๊ธธ์ด ๋ฐํ
์์ค์ฝ๋ :
public class test19 {
public static int solution(String s) {
int min = s.length();
for (int i = 1; i <= s.length(); i++) {
int compressedSize = compression(s, i);
min = Math.min(min, compressedSize);
}
return min;
}
private static int compression(String s, int idx) {
StringBuilder builder = new StringBuilder();
String before = "";
int count = 0;
for (String i : splitString(s, idx)) {
if (i.equals(before)) {
count++;
} else {
if (count > 0) {
count++;
builder.append(count + before);
count = 0;
} else {
builder.append(before);
}
before = i;
}
}
//๋จ์ ๋ฌธ์์ด ์ฒ๋ฆฌ
if (count > 0){
builder.append(count + before);
} else {
builder.append(before);
}
return builder.length();
}
private static String[] splitString(String s, int idx) {
String[] answer = new String[(s.length() / idx) + 1];
int startIdx = 0;
int endIdx = idx;
for (int i = 0; i < answer.length; i++){
if (endIdx > s.length()){
endIdx = s.length();
}
answer[i] = s.substring(startIdx, endIdx);
startIdx = endIdx;
endIdx = endIdx + idx;
}
return answer;
}
}
'๐ Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Programmers] LV1. ์ด์ํ ๋ฌธ์ ๋ง๋ค๊ธฐ (0) | 2023.09.05 |
---|---|
์์ฐ์ ๋ค์ง์ด ๋ฐฐ์ด๋ก ๋ง๋ค๊ธฐ (0) | 2023.09.04 |
[Programmers] Lv1. ๊ฐ์ฅ ๊ฐ๊น์ด ๊ฐ์ ๊ธ์ (0) | 2023.03.19 |
[Programmers] Lv1. ๋ ๋งต๊ฒ (0) | 2023.03.19 |
[Programmers] Lv1. ํฌ๊ธฐ๊ฐ ์์ ๋ถ๋ถ๋ฌธ์์ด (0) | 2023.03.19 |