Daily LeetCode Challenge - 443. String Compression

Min Young Kim·2023년 3월 2일
0

algorithm

목록 보기
82/198

Problem From.

https://leetcode.com/problems/string-compression/

오늘 문제는 주어진 배열에서 글자를 센 다음 글자의 종류, 글자의 수 를 다시 그 배열에 덮어씌워 반환하는 문제였다.

투포인터를 응용하여 풀 수 있었는데, 처음에 prev 라는 포인트를 두고 cnt 라는 숫자를 두어 각 낱말이 반복되는 수를 세어 원래의 chars 배열에 덮어씌워주는 형식으로 문제를 풀 수 있었다.

처음에는 원래의 배열에 덮어씌우는지 몰라서 맞는 풀이를 가지고 조금 헤맸었다...

class Solution {
    fun compress(chars: CharArray): Int {
 
        var cnt = 1
        var prev = 0
        
        for(i in 1 until chars.size) {
            
            if(chars[prev] == chars[i]) {
                cnt += 1
            }else {                
                if(cnt > 1) {
                    cnt.toString().forEach {
                        prev += 1
                        chars[prev] = it
                    }
                }
                prev += 1
                chars[prev] = chars[i]
                cnt = 1
            }
        }
        
        if(cnt > 1) {
            cnt.toString().forEach {
                prev += 1
                chars[prev] = it
            }
        }
        
        return prev + 1
    }
}
profile
길을 찾는 개발자

0개의 댓글