• Home
  • About
    • Moon photo

      Moon

      개발자는 자고 싶다.

    • Learn More
    • Twitter
    • Facebook
    • Instagram
    • Github
    • Steam
  • Posts
    • All Posts
    • All Tags
  • Projects

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

03 Jul 2022

Reading time ~1 minute

문제

60057 문자열 압축

screencapture

풀이

  1. 청크 사이즈를 1에서 전체 문장 사이즈 1/2까지로 변경해가며 문장을 나눈다.
  2. 각 청크 사이즈에서 문자열을 잘라 압축하여 표현한 문자열의 길이는 측정하고, 가장 작은 길이를 남겨둔다.

kotlin code

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

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
    }
}


programmerskotlin코틀린프로그래머스Lv.2풀이 Share Tweet +1