728x90
https://programmers.co.kr/learn/courses/30/lessons/60057?language=java#
// 코드
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 = Integer.MAX_VALUE;
for( int interval=1; interval<=(s.length()/2); ++interval ) {
String resStr = "";
int cursor = 0, nCursor = cursor + interval, cnt = 1;
String s1 = s.substring(cursor, cursor+interval);
while( nCursor + interval <= s.length() ) {
String s2 = s.substring(nCursor, nCursor+interval);
if(s1.equals(s2)) ++cnt;
else {
if( cnt > 1 ) resStr += (cnt + s1);
else resStr += s1;
cursor = nCursor;
s1 = s2;
cnt = 1;
}
nCursor += interval;
}
// 마지막 부분을 처리해준다.
if( cnt > 1 ) resStr += (cnt + s.substring(cursor, cursor+interval));
else resStr += s.substring(cursor);
// 마지막 부분을 처리해도 파편이 생겼을 경우가 생긴다 이 때 붙여줘야된다. -> "aaaaaaaaaab" : 4 를 추가해보자.
if( (cursor+interval) < nCursor ) resStr += s.substring(cursor+interval).substring(nCursor - (cursor+interval));
// 최솟값을 구한다
answer = Math.min(answer, resStr.length());
}
return s.length() == 1 ? 1 : answer;
}
}
|
cs |
반응형
'CS > 알고리즘_KAKAO BLIND RECRUITMENT' 카테고리의 다른 글
2018 KAKAO BLIND RECRUITMENT : [1차] 프렌즈4블록 (0) | 2021.11.08 |
---|---|
2018 KAKAO BLIND RECRUITMENT : [3차] 방금그곡 (0) | 2021.11.05 |
2018 KAKAO BLIND RECRUITMENT : [3차] 파일명 정렬 (0) | 2021.11.03 |
2019 KAKAO BLIND RECRUITMENT : 블록 게임 (0) | 2021.11.02 |
2018 KAKAO BLIND RECRUITMENT : [3차] n진수 게임 (0) | 2021.11.01 |