圧縮ココア2020文字列

1086 ワード

質問する


https://programmers.co.kr/learn/courses/30/lessons/60057

に答える

def solution(s):
    
    def check(x):
        result = ""
        temp = []
        count = 1
        for i in range(0,len(s),x):
            temp.append(s[i:i+x])
        
        for i in range(0,len(temp)-1):
            if temp[i] == temp[i+1]:
                count += 1
                
            else :
                result += (str(count) + temp[i]) if count > 1 else temp[i]
                count = 1
        
        result += (str(count) + temp[i]) if count > 1 else temp[i+1]
        return len(result)
            
    arr = []
    arr.append(len(s))
    for j in range(1,len(s)):
        arr.append(check(j))

    return min(arr)

注意点


5つ目のテストケースでは、常に実行中に現れるため、その部分を見つけるのは難しい.
1文字を入力した場合、arrにappendがないため、min関数は空の配列を呼び出し、実行時エラーを引き起こします.
従ってarr.append(len(s))
デフォルトは文字列の長さです
終わります.