Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Latest commit

 

History

History
History
38 lines (36 loc) · 1.58 KB

File metadata and controls

38 lines (36 loc) · 1.58 KB
Copy raw file
Download raw file
Open symbols panel
Edit and raw actions
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
import java.util.*;
class Solution {
public int solution(String s) {
int answer = s.length();
// 1개 단위(step)부터 압축 단위를 늘려가며 확인
for (int step = 1; step < s.length() / 2 + 1; step++) {
String compressed = "";
String prev = s.substring(0, step); // 앞에서부터 step만큼의 문자열 추출
int cnt = 1;
// 단위(step) 크기만큼 증가시키며 이전 문자열과 비교
for (int j = step; j < s.length(); j += step) {
// 이전 상태와 동일하다면 압축 횟수(count) 증가
String sub = "";
for (int k = j; k < j + step; k++) {
if (k < s.length()) sub += s.charAt(k);
}
if (prev.equals(sub)) cnt += 1;
// 다른 문자열이 나왔다면(더 이상 압축하지 못하는 경우라면)
else {
compressed += (cnt >= 2)? cnt + prev : prev;
sub = "";
for (int k = j; k < j + step; k++) {
if (k < s.length()) sub += s.charAt(k);
}
prev = sub; // 다시 상태 초기화
cnt = 1;
}
}
// 남아있는 문자열에 대해서 처리
compressed += (cnt >= 2)? cnt + prev : prev;
// 만들어지는 압축 문자열이 가장 짧은 것이 정답
answer = Math.min(answer, compressed.length());
}
return answer;
}
}
Morty Proxy This is a proxified and sanitized view of the page, visit original site.