Home 프로그래머스 - 60057 문자열 압축 풀이
Post
Cancel

프로그래머스 - 60057 문자열 압축 풀이

문제

60057 문자열 압축

screencapture

풀이

  1. 청크 사이즈를 1에서 전체 문장 사이즈 1/2까지로 변경해가며 문장을 나눈다.
  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.

프로그래머스 - 77484 로또의 최고 순위와 최저 순위 풀이

프로그래머스 - 42895 N으로 표현 풀이