프로그래머스 - 60057 문자열 압축 풀이
문제
60057 문자열 압축
풀이
- 청크 사이즈를 1에서 전체 문장 사이즈 1/2까지로 변경해가며 문장을 나눈다.
- 각 청크 사이즈에서 문자열을 잘라 압축하여 표현한 문자열의 길이는 측정하고, 가장 작은 길이를 남겨둔다.
kotlin code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
val chunks = s.chunked(chunkSize)
var currChunk = ""
var currChunkCount= 1
var currSize = 0
for(chunk in chunks) {
if (currChunk == chunk) {
currChunkCount++
continue
}
currChunk = chunk
if (currChunkCount > 1) {
currSize += currChunkCount.toString().length
currChunkCount = 1
}
currSize += chunk.length
}
if (currChunkCount > 1) currSize += currChunkCount.toString().length
minSize = kotlin.math.min(currSize, minSize)
답
kotlin code
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
class Solution {
fun solution(s: String): Int {
var minSize = s.length
for(chunkSize in (1..s.length/2)) {
val chunks = s.chunked(chunkSize)
var currChunk = ""
var currChunkCount= 1
var currSize = 0
for(chunk in chunks) {
if (currChunk == chunk) {
currChunkCount++
continue
}
currChunk = chunk
if (currChunkCount > 1) {
currSize += currChunkCount.toString().length
currChunkCount = 1
}
currSize += chunk.length
}
if (currChunkCount > 1) currSize += currChunkCount.toString().length
minSize = kotlin.math.min(currSize, minSize)
}
return minSize
}
}
This post is licensed under CC BY 4.0 by the author.