반응형
fun solution(s: String): Int {
val length = s.length
var min = length
val mid = length/2+1
for (cnt in 1 until mid+1) { //압추크기가 반을 넘을 수 없어서
var len = length
var i =cnt
var num = 1
while (i<length-cnt+1) {
val word =s.substring(i, i+cnt)
val word2 =s.substring(i-cnt,i)
if(word==word2) { //중복되는지
num++ //중복되면 중복 카운트 증가
len-=cnt //중복된 문자열의 길이를 빼줌
} else {
if (num!=1) {
len+= num.toString().length //중복 숫자를 더해줌 여기서 실수를 했었는데 num의 자리수를 고려해야 한다.(ex 10, 100..)
num=1
}
}
i+=cnt
if (i>=length-cnt+1 &&num!=1) {
len+= num.toString().length //마지막에 중복 숫자를 더해줌
}
}
if (min>len) {
min =len
}
}
return min
}
반응형
'알고리즘' 카테고리의 다른 글
프로그래머스 길 찾기 게임 (0) | 2020.10.31 |
---|---|
프로그래머스 가사검색 코틀린 (0) | 2020.10.25 |
백준 1806 부분합 코틀린 (0) | 2020.07.05 |
백준 2003 투포인터 수들의 합2 코틀린 (0) | 2020.07.04 |
dfs 프로그래머스 네트워크 (0) | 2020.05.17 |